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

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

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

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

6298閲覧

Spring Bootにおけるファイルアップロードの際にファイルを取得できない時がある(DIができていない..?)

hikage

総合スコア28

Java

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2017/05/26 02:19

編集2017/05/29 02:43

お世話になります。
Spring Bootにてファイルアップロードを行いたいのですが以下の状況にて、うまくいくケースがほとんどなのですが、うまくいかない場合があるのでご教授頂きたいです。(10回に1回くらい失敗します。)

内容としては、下記コントローラーにて、getterでMultiPartFileオブジェクトを取得し、サイズや名前を確認してもサイズが0、名前は取得できない状況にあります。うまくいくケースでは当然、それぞれサイズや名前は取得できます。

よろしくお願いいたします。

2017/05/29追記

サーバーサイドを疑ってずっとデバッグしていましたが、フロント側でデバッグしてみたところ、フォーム送信直前のフォームオブジェクトがアップロードしたファイルを保持できていませんでした。発生頻度については、前述のとおりです。Formタグには、enctype="multipart/form-data"を指定しておりますが、そのほかにも何かフロント側で実施するべきことがあるのでしょうか?

html

1 2<form th:action="@{/registerEvidence}" method="post" enctype="multipart/form-data"> 3 <input type="file" name="evidence_file"/> 4 <input type="submit" value="送信" /> 5</form>

Java

1//Formエンティティ 2import org.springframework.web.multipart.MultipartFile; 3import lombok.Data; 4@Data 5public class EvidenceForm { 6 // アップロードファイル 7 private MultipartFile evidence_file; 8}

Java

1 // コントローラー 2 @RequestMapping(value="/registerEvidence" ,method=RequestMethod.POST) 3 public String registerEvidence( 4 @Validated @ModelAttribute("EvidenceForm") EvidenceForm evidenceForm, 5 BindingResult bindingResult, 6 Model model, 7 RedirectAttributes redirectAttributes 8 ) throws IOException 9 MultipartFile file = evidenceForm.getEvidence_file(); 10 Long size = file.getSize(); //失敗時はsizeが0になる 11 String name = file.getName(); //失敗時は空文字になる 12 13 if(size > 0){ 14 //登録処理 15 }

gradle

1dependencies { 2 compile "org.springframework.boot:spring-boot-starter-web:$springBootVersion" 3 compile('org.springframework.boot:spring-boot-starter-thymeleaf') 4 compile("org.springframework.boot:spring-boot-starter-data-jpa") 5 compile "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion" 6 compile("org.webjars:jquery:2.1.4") 7 compile("org.webjars:bootstrap:3.3.5") 8 compile "mysql:mysql-connector-java:$mySQLVersion" 9 compile("org.springframework.boot:spring-boot-devtools") 10 compile 'commons-codec:commons-codec:1.10' 11 12 compile("org.springframework.boot:spring-boot-starter-security") 13 compile("org.thymeleaf.extras:thymeleaf-extras-springsecurity4") 14 15 providedRuntime('org.projectlombok:lombok:1.16.6') 16 providedRuntime('org.springframework.boot:spring-boot-starter-tomcat') 17 testCompile('org.springframework.boot:spring-boot-starter-test') 18 19 compile("org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16") 20 compile("org.lazyluke:log4jdbc-remix:0.2.7") 21 compile("org.springframework.boot:spring-boot-configuration-processor") 22 compile("org.apache.commons:commons-lang3:3.0") 23 24 compile("org.apache.poi:poi:3.15") 25 compile("org.apache.poi:poi-ooxml:3.15") 26 compile("org.apache.poi:poi-ooxml-schemas:3.15") 27 28 compile("org.apache.commons:commons-collections4:4.1") 29 compile('commons-fileupload:commons-fileupload:1.2') 30 compile 'javax.mail:mail:1.4' 31 compile 'net.sf.opencsv:opencsv:2.3' 32 compile 'net.sf.jasperreports:jasperreports:6.2.0' 33}

SpringBoot 1.4.1
Jdk 1.8.0_121

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

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

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

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

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

guest

回答1

0

ベストアンサー

関係ないかも知れませんが、commons-fileuploadのバージョンがやや古いようです。現在は1.3.2が最新です。
https://commons.apache.org/proper/commons-fileupload/

なお、成功するときに、失敗するときのファイルの大きさやファイル名、ウィルススキャナの有無によってはアップロード失敗はあります。
https://commons.apache.org/proper/commons-fileupload/using.html の Interaction with virus scanners にあるよう、アップロードしたファイルの配置ディレクトリを一時的にスキャン対象外にするなどの対応で解決できる場合があります。

投稿2017/05/26 05:40

A-pZ

総合スコア12011

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

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

hikage

2017/05/29 00:13

回答ありがとうございます。バージョンアップについては、実施してみましたがやはり症状は変わらずでした。他の点についても、色々と教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問