1

要素で許可されている新しい multiple="multiple" 属性を使用しようとしています。これまでのところ、これは最近の Gecko および WebKit ブラウザーでサポートされています。私は Firefox 3.6 と Chrome 5.0 でテストしています。

問題なく使用でき、ファイルのリストを表示できます(これをガイダンスとして使用しました)。ただし、かなり苛立たしいことに、ユーザーがファイルを追加した後、このリストからファイルを削除することはできないようです。唯一の方法は、[参照...] ボタンをクリックして新しいファイル セットを選択することです。

これは<input>、仕様に記載されているように、要素によって提供される FileList オブジェクトが読み取り専用であるためです (リンクできません - W3C の Web サイトで FileAPI TR を参照してください)。

もちろん、「削除された」アイテムのリストを保持し、とにかくすべてをアップロードしてから「削除された」アイテムを無視するなどの回避策があります。これは少し汚れており、多くのファイルが「削除」されると、アップロードが容認できないほど遅くなる可能性があります。

誰かが他の回避策を知っていますか、またはこれに対処するためのより良いアイデアを持っていますか? 目的は、「複数」属性を使用できるようにし、ユーザーがアップロード前にリストからファイルを削除できるようにすることです。

4

1 に答える 1

0

File API の編集者である Arun Ranganathan から回答を得ました。

プログラマ (File API を使用してユーザーのファイル選択をプログラムで操作する)は、ユーザーの決定に違反することはできません。そのため、API では、プログラマがユーザーの選択にファイルを追加したり、ユーザーの選択からファイルを削除したり することはできません。これを許可すると、大きなセキュリティ ホールになります。悪い Web サイトは、非常に悪いこと、または少なくとも非常に迷惑なことを実行できる可能性があります。これが、現在のパラダイムが、少なくとも [ファイル] ダイアログ ボックス (現在は input type="file" で生成されている) を介して承認されていない、基になるファイル システムとの対話を許可しない理由です。

FileList は、ユーザーがファイル ピッカーで最初に選択した内容を反映する必要があり、FileList に何かを追加できると、大きなセキュリティ ホールになることに同意します。何かを削除できることが、これほど重大なセキュリティ上の問題を引き起こすとは思えませんが、あまり積極的でない目的で使用される可能性があることは理解できます。

于 2010-10-26T18:31:29.973 に答える