質問編集履歴
1
コードを差し替えました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,4 @@
|
|
1
1
|
いま目指すゴールは、画面にドラッグアンドドロップしたファイルを、ControllerでMultipartFileのリストまたは配列で受け取ること。
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
いまのところ、MultipartFileのリストまたは配列(両方試しました)で受け取る…までは行ったのですが、肝心のMultipartFileの中身が、filename="", part/fileitem={name=, StoreLocation=null, size=0 bytes, isFormField=false, FieldName=files}といった感じで、からっぽです。
|
6
2
|
|
7
3
|
|
8
4
|
|
@@ -10,11 +6,47 @@
|
|
10
6
|
|
11
7
|
|
12
8
|
|
9
|
+
※追記
|
10
|
+
|
11
|
+
ajaxを使ったパターンに差し替えました。(ほぼ昨日の状態…)
|
12
|
+
|
13
|
+
contorollerに届かないところでとん挫しています。まだ糸口は見つかっていません。
|
14
|
+
|
15
|
+
(プロジェクト内ではもちろんajax使っている箇所はたくさんあり、パス指定による単ファイルアップロードもできています。が、なぜか、どのパターンをここに応用してもうまくいかない…)←ajaxを深く理解しないまま流用しつづけているからですが…。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
ブラウザのエラーメッセージ:
|
20
|
+
|
21
|
+
Object
|
22
|
+
|
23
|
+
jquery-1.11.0.min.js:4 Uncaught TypeError: Illegal invocation
|
24
|
+
|
25
|
+
at e (jquery-1.11.0.min.js:4)
|
26
|
+
|
27
|
+
at Wc (jquery-1.11.0.min.js:4)
|
28
|
+
|
29
|
+
at Function.n.param (jquery-1.11.0.min.js:4)
|
30
|
+
|
31
|
+
at Function.ajax (jquery-1.11.0.min.js:4)
|
32
|
+
|
33
|
+
at sendFiles (dropfile.js:114)
|
34
|
+
|
35
|
+
at HTMLTextAreaElement.<anonymous> (dropfile.js:102)
|
36
|
+
|
37
|
+
at HTMLTextAreaElement.dispatch (jquery-1.11.0.min.js:3)
|
38
|
+
|
39
|
+
at HTMLTextAreaElement.r.handle (jquery-1.11.0.min.js:3)
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
ひとまずここから、formDataの使い方などをもういちど確認していきたいと思っています。
|
44
|
+
|
45
|
+
|
46
|
+
|
13
47
|
```html
|
14
48
|
|
15
49
|
<div id="dropArea">ここにファイルをドラッグ&ドロップしてください</div>
|
16
|
-
|
17
|
-
<form method="post" id="dropUpload" th:action="@{/dropUpload}" enctype="multipart/form-data" th:object="${form}"></form>
|
18
50
|
|
19
51
|
```
|
20
52
|
|
@@ -40,19 +72,57 @@
|
|
40
72
|
|
41
73
|
e.preventDefault();
|
42
74
|
|
43
|
-
|
75
|
+
sendFiles(e.originalEvent.dataTransfer.files, '/dropUpload1');
|
44
76
|
|
45
|
-
|
77
|
+
});
|
46
78
|
|
47
|
-
for (var i = 0; i < dropFiles.length; i++) {
|
48
79
|
|
80
|
+
|
81
|
+
function sendFiles(files, url) {
|
82
|
+
|
83
|
+
if(!confirm("ファイルをフォルダに追加しますか?")) return;
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
var formData = new FormData();
|
88
|
+
|
89
|
+
for (var i = 0; i < files.length; i++){
|
90
|
+
|
91
|
+
alert(i); //←ファイル個数分表示される
|
92
|
+
|
49
|
-
|
93
|
+
formData.append('files', files[i]);
|
50
94
|
|
51
95
|
}
|
52
96
|
|
53
|
-
$fm.submit();
|
54
97
|
|
98
|
+
|
99
|
+
$.ajax({
|
100
|
+
|
101
|
+
type: "POST",
|
102
|
+
|
103
|
+
url : url,
|
104
|
+
|
105
|
+
data: formData,
|
106
|
+
|
107
|
+
success : function(data, status, xhr) {
|
108
|
+
|
109
|
+
// 処理など
|
110
|
+
|
111
|
+
},
|
112
|
+
|
113
|
+
error : function(XMLHttpRequest,
|
114
|
+
|
115
|
+
textStatus, errorThrown) {
|
116
|
+
|
117
|
+
// 処理など
|
118
|
+
|
119
|
+
}
|
120
|
+
|
55
|
-
});
|
121
|
+
});
|
122
|
+
|
123
|
+
}
|
124
|
+
|
125
|
+
|
56
126
|
|
57
127
|
```
|
58
128
|
|
@@ -62,26 +132,14 @@
|
|
62
132
|
|
63
133
|
public class DropInController {
|
64
134
|
|
65
|
-
@RequestMapping(value = "dropUpload", method = RequestMethod.POST)
|
135
|
+
@RequestMapping(value = "/dropUpload1", method = RequestMethod.POST)
|
66
136
|
|
67
|
-
public
|
137
|
+
public String dropUpload1(@RequestParam("files") List<MultipartFile> files, Model model) {
|
68
138
|
|
69
|
-
|
139
|
+
// 処理など
|
70
140
|
|
71
141
|
}
|
72
142
|
|
73
143
|
}
|
74
144
|
|
75
145
|
```
|
76
|
-
|
77
|
-
```java
|
78
|
-
|
79
|
-
@Data
|
80
|
-
|
81
|
-
public class UploadForm {
|
82
|
-
|
83
|
-
private MultipartFile[] files;
|
84
|
-
|
85
|
-
}
|
86
|
-
|
87
|
-
```
|