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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

JavaScript

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

HTML

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

Q&A

解決済

2回答

17350閲覧

【悲報】複数ファイルアップロードがうまくいかない

isacRu

総合スコア64

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2016/10/06 03:19

【問題】
単体ファイルアップロードは成功しましたが、複数ファイルアップロードで、フォーム送信がうまくいきません。

【詳しく…】
htmlのformタグの属性としてenctype="multipart/form-data"を適用し、かつinput属性のところにmultiple属性を適用しました。

JSP

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>ファイルアップロードサンプル</title> 6 </head> 7 8 <body onload="updateSize();"> 9 <form name="uploadingForm" enctype="multipart/form-data" action="/" method="POST"> 10 <p> 11 <input id="fileInput" type="file" name="uploadingFiles" onchange="updateSize();" multiple> 12 ファイル選択: <span id="fileNum">0</span>; 13 ファイルサイズ: <span id="fileSize">0</span> 14 </p> 15 <p> 16 <input type="submit" value="ファイルアップロード"> 17 </p> 18 </form> 19 <div> 20 <div>ファイルアップロード:</div> 21 <#list files as file> 22 <div> 23 ${file.getName()} 24 </div> 25 </#list> 26 </div> 27 <script> 28 function updateSize() { 29 var nBytes = 0, 30 oFiles = document.getElementById("fileInput").files, 31 nFiles = oFiles.length; 32 for (var nFileId = 0; nFileId < nFiles; nFileId++) { 33 nBytes += oFiles[nFileId].size; 34 } 35 36 var sOutput = nBytes + " bytes"; 37 for (var aMultiples = ["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"], nMultiple = 0, nApprox = nBytes / 1024; nApprox > 1; nApprox /= 1024, nMultiple++) { 38 sOutput = nApprox.toFixed(3) + " " + aMultiples[nMultiple] + " (" + nBytes + " bytes)"; 39 } 40 document.getElementById("fileNum").innerHTML = nFiles; 41 document.getElementById("fileSize").innerHTML = sOutput; 42 } 43 </script> 44 </body> 45</html>

コントローラクラス

JAVA

1import org.springframework.stereotype.Controller; 2import org.springframework.ui.Model; 3import org.springframework.web.bind.annotation.RequestMapping; 4import org.springframework.web.bind.annotation.RequestMethod; 5import org.springframework.web.bind.annotation.RequestParam; 6import org.springframework.web.multipart.MultipartFile; 7 8import java.io.File; 9import java.io.IOException; 10 11@Controller 12public class UploadingController { 13 public static final String uploadingdir = System.getProperty("user.dir") + "/uploadingdir/"; 14 15 @RequestMapping("/") 16 public String uploading(Model model) { 17 File file = new File(uploadingdir); 18 model.addAttribute("files", file.listFiles()); 19 return "uploading"; 20 } 21 22 @RequestMapping(value = "/", method = RequestMethod.POST) 23 public String uploadingPost(@RequestParam("uploadingFiles") MultipartFile[] uploadingFiles) throws IOException { 24 for(MultipartFile uploadedFile : uploadingFiles) { 25 File file = new File(uploadingdir + uploadedFile.getOriginalFilename()); 26 uploadedFile.transferTo(file); 27 } 28 29 return "redirect:/"; 30 } 31}

確認用のためjavascriptでファイルサイズとファイル数があがっているのかの確認ソースを追加しました。ファイル選択ボタンを押下し、エクスプローラでファイルを選択します。もうもう一度エクスプローラを開いてファイルを選択し、ファイル数が二個になっていることを確認した上で、ファイルアップロードボタンを押した。確認すると一個しかファイルがアップロードされていなかった。ファイル数をラベルで確認しても二個アップロードしたはずが、一つしかファイルがアップロードされていなかった。何が原因が全く分からず、なぜこのような現象が起きているのかわかる方教えてください。宜しくお願い致します。

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

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

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

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

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

coco_bauer

2016/10/06 05:49

【悲報】って??? 他の人に悲しんでもらいたいの???
isacRu

2016/10/06 05:55

は??悲報って意味知ってます?
mpyw

2016/10/06 06:24

どっちの肩を持つつもりもありませんが,要するにTPOをわきまえて質問しましょう,ということです.(私はそんなに気にするほうでは無いですが…)
isacRu

2016/10/06 06:29 編集

えー、悲報って書いちゃだめ?何が悪い??わからん。ファイル複数アップロードできんのは悲報やん。
mpyw

2016/10/06 06:36 編集

言ってる意味が全くわからないのであればこういうところに行ったほうが良さそう → http://tamae.2ch.net/php (正直いちいちこんなことに反応してる方が時間のムダですが,ご覧の通り気にする人も一定数いるということは知っておくべきです)
isacRu

2016/10/06 06:49 編集

あー、なるほどそいうことか!…でも悪いことやないやん。不快になるって話でもないし、シモネタじゃないんだから
guest

回答2

0

なにも気にせずにmultipleでデータを複数渡せば名前の競合が起きるからでは?

「java ファイルアップロード multiple」あたりでぐぐってみてください

投稿2016/10/06 03:33

yambejp

総合スコア114742

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

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

0

ベストアンサー

ファイルアップロードはリクエストパラメータからでは正しく取得できません。

以下、実装例:

java

1@PostMapping("/upload") 2public String upload(@ModelAttribute("files") FileUploadForm files,Map<String,Object> model) { 3 List<String> filenameList = new ArrayList<>(); 4 files.getFiles().stream().forEachOrdered(file -> { 5 String fileName = file.getOriginalFilename(); 6 filenameList.add(fileName); 7 }); 8 model.put("filenameList", filenameList); 9 10 return "upload"; 11}

java

1import org.springframework.web.multipart.MultipartFile; 2 3import java.util.List; 4 5public class FileUploadForm { 6 List<MultipartFile> files; 7 8 public List<MultipartFile> getFiles() { 9 return files; 10 } 11 12 public void setFiles(List<MultipartFile> files) { 13 this.files = files; 14 } 15}

投稿2016/10/06 06:20

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問