回答編集履歴

4

追記

2021/09/02 01:50

投稿

退会済みユーザー
test CHANGED
@@ -142,4 +142,4 @@
142
142
 
143
143
 
144
144
 
145
- (5) なので、上記のコードのように for ループで選択したファイルを一つずつ取得して操作できる。
145
+ (5) なので、上記のコードのように for ループで選択したファイル(File オブジェクト)を一つずつ取得して操作できる。

3

追記2

2021/09/02 01:50

投稿

退会済みユーザー
test CHANGED
@@ -19,3 +19,127 @@
19
19
 
20
20
 
21
21
  であれば、ちょっと話が違ってきますが。どのように使いたいのか、全体的な話を書いてもらった方が良さそうです。
22
+
23
+
24
+
25
+ **【追記2】**
26
+
27
+
28
+
29
+ 質問の「追記」に対してレスします。
30
+
31
+
32
+
33
+ > この解説に、「FileListオブジェクトはinputオブジェクトのfilesプロパティで取得できる」という部分があったため、あるオブジェクトが別のオブジェクトのプロパティで取得できるとは、どういう意味なのかわからなかったため質問させていただきました。
34
+
35
+
36
+
37
+ input 要素、files プロパティ、FileList オブジェクトの関係については、以下の記事の View のコードが説明になるのではと思います。
38
+
39
+
40
+
41
+ 異なるフォルダのファイルをアップロード
42
+
43
+ [http://surferonwww.info/BlogEngine/post/2020/07/09/uploading-multiple-files-in-different-folders.aspx](http://surferonwww.info/BlogEngine/post/2020/07/09/uploading-multiple-files-in-different-folders.aspx)
44
+
45
+
46
+
47
+ 関係部分のみを抜粋すると、
48
+
49
+
50
+
51
+ ```html
52
+
53
+ <input id="mutiplefileupload" type="file"
54
+
55
+ name="postedfiles" multiple="multiple" />
56
+
57
+ ```
58
+
59
+
60
+
61
+ ```javascript
62
+
63
+ <script type="text/javascript">
64
+
65
+ //<![CDATA[
66
+
67
+
68
+
69
+ $(function () {
70
+
71
+ // ブラウザの HTML5 File API サポートを確認
72
+
73
+ if (window.File && window.FileReader && window.FileList) {
74
+
75
+
76
+
77
+ // FormData オブジェクトを取得
78
+
79
+ var fd = new FormData(document.querySelector("form"));
80
+
81
+
82
+
83
+ // input type="file" 要素のオブジェクトを取得
84
+
85
+ var fileUpload = document.getElementById("mutiplefileupload");
86
+
87
+
88
+
89
+ // input type="file" 要素でダイアログを開いてファイルを選択
90
+
91
+ // し[開く]ボタンをクリックすると、その都度 change イベン
92
+
93
+ // トが発生する。それにリスナ(下のコードの function )を
94
+
95
+ // アタッチして FormData オブジェクトを操作する
96
+
97
+ fileUpload.addEventListener('change', function (e) {
98
+
99
+ // files プロパティで FileList オブジェクトを取得
100
+
101
+ var filelist = fileUpload.files;
102
+
103
+
104
+
105
+ // 一回の操作で複数のファイルを選択できるので、以下
106
+
107
+ // のようにループを回して
108
+
109
+ for (let i = 0; i < filelist.length; i++) {
110
+
111
+ // File オブジェクトを FormData に追加していく
112
+
113
+ fd.append("postedfiles", filelist[i]);
114
+
115
+ }
116
+
117
+ });
118
+
119
+
120
+
121
+ //]]>
122
+
123
+ </script>
124
+
125
+ ```
126
+
127
+
128
+
129
+ (1) input type="file" 要素がブラウザにロードされるとそのオブジェクトが生成されるので getElementById でそれを取得。
130
+
131
+
132
+
133
+ (2) ブラウザに表示された input type="file" 要素でダイアログ(紹介した記事の 2 つ目の画像参照)を開いてファイルを選択。multiple="multiple" 属性が設定してあるので複数のファイルを選択可能。
134
+
135
+
136
+
137
+ (3) files プロパティで FileList オブジェクトを取得。
138
+
139
+
140
+
141
+ (4) FileList.length プロパティで上記 (2) で選択したファイルの数を取得できる。
142
+
143
+
144
+
145
+ (5) なので、上記のコードのように for ループで選択したファイルを一つずつ取得して操作できる。

2

追記

2021/09/02 01:27

投稿

退会済みユーザー
test CHANGED
@@ -3,3 +3,19 @@
3
3
 
4
4
 
5
5
  もともと var input = {files: (value);…} というオブジェクトがあって、その value が FileList オブジェクトを指しているということだと思います。
6
+
7
+
8
+
9
+ **【追記】**
10
+
11
+
12
+
13
+ その「inputオブジェクト」というのは、html の ```<input>``` 要素のことだったのでしょうか?
14
+
15
+
16
+
17
+ [https://developer.mozilla.org/ja/docs/Web/API/FileList](https://developer.mozilla.org/ja/docs/Web/API/FileList)
18
+
19
+
20
+
21
+ であれば、ちょっと話が違ってきますが。どのように使いたいのか、全体的な話を書いてもらった方が良さそうです。

1

引用追記

2021/09/01 23:37

投稿

退会済みユーザー
test CHANGED
@@ -1 +1,5 @@
1
+ > 「FileListオブジェクトはinputオブジェクトのfilesプロパティで取得できる」
2
+
3
+
4
+
1
5
  もともと var input = {files: (value);…} というオブジェクトがあって、その value が FileList オブジェクトを指しているということだと思います。