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

回答編集履歴

4

追記

2021/09/02 01:50

投稿

退会済みユーザー
answer CHANGED
@@ -70,4 +70,4 @@
70
70
 
71
71
  (4) FileList.length プロパティで上記 (2) で選択したファイルの数を取得できる。
72
72
 
73
- (5) なので、上記のコードのように for ループで選択したファイルを一つずつ取得して操作できる。
73
+ (5) なので、上記のコードのように for ループで選択したファイル(File オブジェクト)を一つずつ取得して操作できる。

3

追記2

2021/09/02 01:50

投稿

退会済みユーザー
answer CHANGED
@@ -8,4 +8,66 @@
8
8
 
9
9
  [https://developer.mozilla.org/ja/docs/Web/API/FileList](https://developer.mozilla.org/ja/docs/Web/API/FileList)
10
10
 
11
- であれば、ちょっと話が違ってきますが。どのように使いたいのか、全体的な話を書いてもらった方が良さそうです。
11
+ であれば、ちょっと話が違ってきますが。どのように使いたいのか、全体的な話を書いてもらった方が良さそうです。
12
+
13
+ **【追記2】**
14
+
15
+ 質問の「追記」に対してレスします。
16
+
17
+ > この解説に、「FileListオブジェクトはinputオブジェクトのfilesプロパティで取得できる」という部分があったため、あるオブジェクトが別のオブジェクトのプロパティで取得できるとは、どういう意味なのかわからなかったため質問させていただきました。
18
+
19
+ input 要素、files プロパティ、FileList オブジェクトの関係については、以下の記事の View のコードが説明になるのではと思います。
20
+
21
+ 異なるフォルダのファイルをアップロード
22
+ [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)
23
+
24
+ 関係部分のみを抜粋すると、
25
+
26
+ ```html
27
+ <input id="mutiplefileupload" type="file"
28
+ name="postedfiles" multiple="multiple" />
29
+ ```
30
+
31
+ ```javascript
32
+ <script type="text/javascript">
33
+ //<![CDATA[
34
+
35
+ $(function () {
36
+ // ブラウザの HTML5 File API サポートを確認
37
+ if (window.File && window.FileReader && window.FileList) {
38
+
39
+ // FormData オブジェクトを取得
40
+ var fd = new FormData(document.querySelector("form"));
41
+
42
+ // input type="file" 要素のオブジェクトを取得
43
+ var fileUpload = document.getElementById("mutiplefileupload");
44
+
45
+ // input type="file" 要素でダイアログを開いてファイルを選択
46
+ // し[開く]ボタンをクリックすると、その都度 change イベン
47
+ // トが発生する。それにリスナ(下のコードの function )を
48
+ // アタッチして FormData オブジェクトを操作する
49
+ fileUpload.addEventListener('change', function (e) {
50
+ // files プロパティで FileList オブジェクトを取得
51
+ var filelist = fileUpload.files;
52
+
53
+ // 一回の操作で複数のファイルを選択できるので、以下
54
+ // のようにループを回して
55
+ for (let i = 0; i < filelist.length; i++) {
56
+ // File オブジェクトを FormData に追加していく
57
+ fd.append("postedfiles", filelist[i]);
58
+ }
59
+ });
60
+
61
+ //]]>
62
+ </script>
63
+ ```
64
+
65
+ (1) input type="file" 要素がブラウザにロードされるとそのオブジェクトが生成されるので getElementById でそれを取得。
66
+
67
+ (2) ブラウザに表示された input type="file" 要素でダイアログ(紹介した記事の 2 つ目の画像参照)を開いてファイルを選択。multiple="multiple" 属性が設定してあるので複数のファイルを選択可能。
68
+
69
+ (3) files プロパティで FileList オブジェクトを取得。
70
+
71
+ (4) FileList.length プロパティで上記 (2) で選択したファイルの数を取得できる。
72
+
73
+ (5) なので、上記のコードのように for ループで選択したファイルを一つずつ取得して操作できる。

2

追記

2021/09/02 01:27

投稿

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

1

引用追記

2021/09/01 23:37

投稿

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