2012-01-22 19 views
3

ここで見つけたデモ(JavaScript file api)に基づいて、実際のアップロードが行われる前にプレビューサムネイルを生成するために、JavaScriptの「ファイル」APIを使用してアップロードする画像に関する情報を表示しています。JavaScriptでFile-APIオブジェクトからプロパティを削除するにはどうすればよいですか?

そうのように「複数の」属性を持つファイル入力を使用して、1つ以上のファイルが、同時に選択することができます:画像(複数可)一度<input type="file" id="imageFiles" name="userfile[]" multiple />

は、ユーザが選択されています、私は検査ファイヤーバグのある要素と私は、DOM内で、 "ファイル"オブジェクトが選択された各イメージに関する情報を含んでいることを知ることができます。

"ファイル"オブジェクトには、ファイルが選択されたのと同じ数のプロパティが含まれ、各プロパティには各イメージに関する情報が含まれます。私はそれぞれのプロパティがオブジェクトそのものであるという意味で、 "ファイル"オブジェクトを連想配列として記述することしかできませんでした。

私がしたいことは、ファイルを「ファイル」オブジェクトから削除して、アップロードする画像の1つを削除し、画像を再度選択する必要がないことです。

これまでのところ、これは私が試したし、それが動作しないものです:

var getAllFiles = document.getElementById('imageFiles'); 
var allImages = getAllFiles.files; // returns an object with X properties 
delete allImages[X]; // "X" is whatever property key I'm passing in 

私は「スプライス()」メソッドを試してみたが、それはどちらか動作しません。

ありがとうございました。

+0

重複したhttp://stackoverflow.com/questions/208105/how-to-remove-a-property-from-a-javascript-object ??または、http://stackoverflow.com/questions/346021/how-do-i-remove-objects-from-a-javascript-associative-array –

+3

タイトルはその質問を誤解しています。 'files'は辞書ではなく、DOMオブジェクトのメンバーです。 JavascriptがDOMオブジェクトにできることとできないことについて、多くのセキュリティ上の考慮がありますが、型ファイルのINPUTより厳密に制御されているものはありません。 「マルチファイルアップロードINPUTからファイルを選択解除する方法」の質問のタイトルを変更してください。 – Malvolio

+0

あなたの時間j-man86とMalvolioありがとうございました。 – jnkrois

答えて

4

.filesは読み取り専用ですので、変更することはできません。

var files = [].slice.call(this.files); 
files.splice(1, 1); //whatever works for normal array 

:あなたは配列にファイルそのものを抽出することができますが、あなたは、通常のフォームのアップロードを使用することはできません、あなたが使って通常の配列にファイルを抽出することができますbinary XHR

を介してそれらをアップロードする必要があるだろうまた、単に最初の場所での入力でaccept="image/*"を置くことができます:

<input type="file" id="imageFiles" accept="image/*" name="userfile[]" multiple /> 

は、私はあなたがこれらのファイルAPIなしでIEや他のブラウザでは動作しません理解してそれを取ります。

+0

本当にありがとうございますEsailija。いくつかの読書とブラウジングの後で、私はそれが読取り専用の状況であることに気付きました。私はセキュリティ上の懸念を理解していますが、サムネイルそのものをクリックするだけでファイルの削除を有効にするといいでしょう。 また、まだ完全にサポートされていないことは分かっています。 ありがとうございます。 – jnkrois

関連する問題