質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

4770閲覧

【HTML/Jquery】POSTにてファイルアップロードの際ファイル名取得が失敗する

koppe

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/05/29 00:56

###前提・実現したいこと
お世話になっております

JAVA(SpringBoot)にてファイルアップロードのシステムを作成しております

ファイルアップロードの際、稀に(10~15回に一度ほど)ファイル名の取得に失敗しております。POSTで受けてJqueryを経由しJAVA側に受け渡すという手順なのですが、原因ご教授頂けますと幸いでございます

■追伸
consoleでJqueryで受ける時点でファイル名が空なのは確認しております。

###該当のソースコード(HTML)

<form id="uploadForm" th:action="@{/upload/uploadForm}" method="post" enctype="multipart/form-data"> <button th:id="${id}" type="button" class="upload_file">アップロード</button> <input type="file" name="upfile" id="upfile"/> </form>

###該当のソースコード(javascript)
$(".upload_file).click(function(){
var upload_file = $('#upfile')[0].files[0];
var filename = upload_file.name;
$("#uploadForm").submit();
});

###該当のソースコード(JAVA)
//Form
import org.springframework.web.multipart.MultipartFile;
import lombok.Data;
@Data
public class failereceiveForm {
// アップロードファイル
private MultipartFile receive_file;
}

###補足情報(Jqueryバージョン)
jquery-3.1.1.js

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/05/29 01:18

失敗しているということはエラーメッセージやエラーログが出ているはずなので、分かるようでしたらエラー情報もご提示願います。
koppe

2017/05/29 01:29

ご返信ありがとうございます。エラーはvar upload_file = $('#upfile')[0].files[0]; upload_file=undefind となり、次の行のvar filename = upload_file.name; で「 Uncaught TypeError: Cannot read property 'name' of undefined」と表示されます
guest

回答2

0

ベストアンサー

「稀に」となると、クライアントプログラムの問題ではないかもしれませんね
ブラウザのF12を押して開発環境でファイルのやり取りを監視し
再現されるまで実行するなど、再現性を上げる必要があります。
また「ファイル名」だけが問題なのか?ファイル名が渡らない場合でも
ファイルの本体は壊れずに受け取れているのかなど検証する必要があると思います

投稿2017/05/29 01:17

yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koppe

2017/05/29 01:35

ご回答ありがとうございます。 ChromeのDeveloper ToolsでJSのソースをステップで送りながら検証をしてみました。 ファイル名取得失敗の場合はファイル自体受け取れていない様子でした。 また同一のファイル名、ファイルの中身も同じもので繰り返し検証したところ、やはり10数度に一度はファイルアップロード失敗しております。 開発用のローカル環境でも、サーバー上の本番環境でも同一の挙動でした ローカルでも起こり得るのはネットワークのエラーとは考えにくいのですが
guest

0

本件解決いたしました。

input部分を繰り返し表示しており、同じIDを使いまわしていたためファイルの取得がうまくいっていない様子でした。

まだテスト段階ですがIDをユニークにすることでファイル取得エラーは回避できると想定しております。

投稿2017/06/01 02:58

koppe

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問