いま目指すゴールは、画面にドラッグアンドドロップしたファイルを、ControllerでMultipartFileのリストまたは配列で受け取ること。
ちょっとしたヒントで構いませんので、教えていただけるとありがたいです。
※追記
ajaxを使ったパターンに差し替えました。(ほぼ昨日の状態…)
contorollerに届かないところでとん挫しています。まだ糸口は見つかっていません。
(プロジェクト内ではもちろんajax使っている箇所はたくさんあり、パス指定による単ファイルアップロードもできています。が、なぜか、どのパターンをここに応用してもうまくいかない…)←ajaxを深く理解しないまま流用しつづけているからですが…。
ブラウザのエラーメッセージ:
Object
jquery-1.11.0.min.js:4 Uncaught TypeError: Illegal invocation
at e (jquery-1.11.0.min.js:4)
at Wc (jquery-1.11.0.min.js:4)
at Function.n.param (jquery-1.11.0.min.js:4)
at Function.ajax (jquery-1.11.0.min.js:4)
at sendFiles (dropfile.js:114)
at HTMLTextAreaElement.<anonymous> (dropfile.js:102)
at HTMLTextAreaElement.dispatch (jquery-1.11.0.min.js:3)
at HTMLTextAreaElement.r.handle (jquery-1.11.0.min.js:3)
ひとまずここから、formDataの使い方などをもういちど確認していきたいと思っています。
html
1<div id="dropArea">ここにファイルをドラッグ&ドロップしてください</div>
js
1$("#dropArea").on('dragenter', function (e) { 2 e.stopPropagation(); 3 e.preventDefault(); 4 }) 5.on('dragover', function (e) { 6 e.stopPropagation(); 7 e.preventDefault(); 8 }) 9.on('drop', function(e) { 10 e.preventDefault(); 11 sendFiles(e.originalEvent.dataTransfer.files, '/dropUpload1'); 12}); 13 14function sendFiles(files, url) { 15 if(!confirm("ファイルをフォルダに追加しますか?")) return; 16 17 var formData = new FormData(); 18 for (var i = 0; i < files.length; i++){ 19 alert(i); //←ファイル個数分表示される 20 formData.append('files', files[i]); 21 } 22 23 $.ajax({ 24 type: "POST", 25 url : url, 26 data: formData, 27 success : function(data, status, xhr) { 28 // 処理など 29 }, 30 error : function(XMLHttpRequest, 31 textStatus, errorThrown) { 32 // 処理など 33 } 34 }); 35} 36
java
1@RestController 2public class DropInController { 3 @RequestMapping(value = "/dropUpload1", method = RequestMethod.POST) 4 public String dropUpload1(@RequestParam("files") List<MultipartFile> files, Model model) { 5 // 処理など 6 } 7}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/08 03:16
2020/05/08 05:42
2020/05/08 05:59
2020/05/08 06:38
2020/05/08 07:14