teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記2

2020/07/04 09:00

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
File without changes

3

追記2

2020/07/04 09:00

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -54,4 +54,15 @@
54
54
  // formdata を Ajax送信
55
55
  });
56
56
  });
57
- ```
57
+ ```
58
+
59
+ 追記2)
60
+ > arrayBufferについて「追記1」として記載させていただきました(コメント欄)
61
+
62
+ ご質問の追記内容 **2.**、 **3.** では、binary-string(文字列)化することに執着しているようですが、**Ajax**で FormData を 送信する方針もあります。
63
+ 簡単ですが以下のような手順になるかと思います。
64
+
65
+ 1. ``var file=new File([arraybuffer],"foo.png",{type:"image/png"});``
66
+ 2. ``formData.append("upfiles", file, file.name );``
67
+ "upfiles" は input[type=file] の name 属性に相当。
68
+ 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

answer CHANGED
@@ -20,4 +20,38 @@
20
20
  > // サーバーに送るデータ, fileオブジェクトの作成
21
21
 
22
22
  コード内コメントより、AjaxによるPOSTの事例について:
23
- * file オブジェクトは [FormData.append()](https://developer.mozilla.org/ja/docs/Web/API/FormData/append) の第二引数に指定できます。
23
+ * file オブジェクトは [FormData.append()](https://developer.mozilla.org/ja/docs/Web/API/FormData/append) の第二引数に指定できます。
24
+
25
+ ----
26
+
27
+ ``new File()`` も不要ですね。
28
+
29
+ ```html
30
+ <input type="file" id="upfiles" multiple>
31
+ <input type="button" id="checkfiles" value="確認">
32
+ ```
33
+
34
+ ```javascript
35
+ const makePostData = () => {
36
+
37
+ let formData = new FormData(),
38
+ upfiles = document.querySelector("#upfiles"),
39
+ key = upfiles.name || upfiles.id,
40
+ files = upfiles.files;
41
+
42
+ for( file of files ) {
43
+ console.log( file.name, file.type );
44
+ formData.append( key, file, file.name );
45
+ }
46
+  return formData;
47
+ }
48
+
49
+ window.addEventListener("DOMContentLoaded", () => {
50
+
51
+ let btn = document.querySelector("#checkfiles");
52
+ btn.addEventListener("click", evt => {
53
+ let formdata = makePostData();// ユーザ関数
54
+ // formdata を Ajax送信
55
+ });
56
+ });
57
+ ```

1

追記

2020/07/04 01:31

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -13,4 +13,11 @@
13
13
 
14
14
  PNG / APNG のファイルフォーマット関連情報
15
15
  > W3C [PNG](https://www.w3.org/TR/PNG/)
16
- MDN [Animated PNG graphics](https://developer.mozilla.org/ja/docs/Animated_PNG_graphics)
16
+ MDN [Animated PNG graphics](https://developer.mozilla.org/ja/docs/Animated_PNG_graphics)
17
+
18
+ 追記)
19
+
20
+ > // サーバーに送るデータ, fileオブジェクトの作成
21
+
22
+ コード内コメントより、AjaxによるPOSTの事例について:
23
+ * file オブジェクトは [FormData.append()](https://developer.mozilla.org/ja/docs/Web/API/FormData/append) の第二引数に指定できます。