回答編集履歴

4

追記2

2020/07/04 09:00

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

test CHANGED
File without changes

3

追記2

2020/07/04 09:00

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

test CHANGED
@@ -111,3 +111,25 @@
111
111
  });
112
112
 
113
113
  ```
114
+
115
+
116
+
117
+ 追記2)
118
+
119
+ > arrayBufferについて「追記1」として記載させていただきました(コメント欄)
120
+
121
+
122
+
123
+ ご質問の追記内容 **2.**、 **3.** では、binary-string(文字列)化することに執着しているようですが、**Ajax**で FormData を 送信する方針もあります。
124
+
125
+ 簡単ですが以下のような手順になるかと思います。
126
+
127
+
128
+
129
+ 1. ``var file=new File([arraybuffer],"foo.png",{type:"image/png"});``
130
+
131
+ 2. ``formData.append("upfiles", file, file.name );``
132
+
133
+ "upfiles" は input[type=file] の name 属性に相当。
134
+
135
+ 3. [Fetch を使う](https://developer.mozilla.org/ja/docs/Web/API/Fetch_API/Using_Fetch) の「ファイルアップロード」の項(FormData を使ったファイルアップロード例)

2

追記2

2020/07/04 09:00

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

test CHANGED
@@ -43,3 +43,71 @@
43
43
  コード内コメントより、AjaxによるPOSTの事例について:
44
44
 
45
45
  * file オブジェクトは [FormData.append()](https://developer.mozilla.org/ja/docs/Web/API/FormData/append) の第二引数に指定できます。
46
+
47
+
48
+
49
+ ----
50
+
51
+
52
+
53
+ ``new File()`` も不要ですね。
54
+
55
+
56
+
57
+ ```html
58
+
59
+ <input type="file" id="upfiles" multiple>
60
+
61
+ <input type="button" id="checkfiles" value="確認">
62
+
63
+ ```
64
+
65
+
66
+
67
+ ```javascript
68
+
69
+ const makePostData = () => {
70
+
71
+
72
+
73
+ let formData = new FormData(),
74
+
75
+ upfiles = document.querySelector("#upfiles"),
76
+
77
+ key = upfiles.name || upfiles.id,
78
+
79
+ files = upfiles.files;
80
+
81
+
82
+
83
+ for( file of files ) {
84
+
85
+ console.log( file.name, file.type );
86
+
87
+ formData.append( key, file, file.name );
88
+
89
+ }
90
+
91
+  return formData;
92
+
93
+ }
94
+
95
+
96
+
97
+ window.addEventListener("DOMContentLoaded", () => {
98
+
99
+
100
+
101
+ let btn = document.querySelector("#checkfiles");
102
+
103
+ btn.addEventListener("click", evt => {
104
+
105
+ let formdata = makePostData();// ユーザ関数
106
+
107
+ // formdata を Ajax送信
108
+
109
+ });
110
+
111
+ });
112
+
113
+ ```

1

追記

2020/07/04 01:31

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

test CHANGED
@@ -29,3 +29,17 @@
29
29
  > W3C [PNG](https://www.w3.org/TR/PNG/)
30
30
 
31
31
  MDN [Animated PNG graphics](https://developer.mozilla.org/ja/docs/Animated_PNG_graphics)
32
+
33
+
34
+
35
+ 追記)
36
+
37
+
38
+
39
+ > // サーバーに送るデータ, fileオブジェクトの作成
40
+
41
+
42
+
43
+ コード内コメントより、AjaxによるPOSTの事例について:
44
+
45
+ * file オブジェクトは [FormData.append()](https://developer.mozilla.org/ja/docs/Web/API/FormData/append) の第二引数に指定できます。