0

私はWebアップローダーに取り組んでいますが、何かを見つけました。それが問題かどうかはわかりません。これは私が見つけたものです:

でファイルを選択すると <input type="file" multiple>、選択したすべてのファイルの値がINPUT内のファイルのリストに保存されます。ただし、ファイルを追加すると、選択したファイルが以前に選択したファイルに置き換わります。これは、この要素DOMのデフォルトの動作だと思います。

以前に選択したファイルを削除せずにファイルを追加したい場合はどうすればよいですか?

誰かがこれを行う方法を知っていますか?

ところで:私の悪い英語でごめんなさい、それは私の母国語ではありません。ありがとう。

4

2 に答える 2

1

すべてのを追跡し、FileListajaxを介して送信するときにそれぞれをループすることができます:http://jsfiddle.net/46Pk8/。ただし、この方法でファイルを複数回選択(およびアップロード)できることに注意してください。より良い方法は、視覚的なリストを用意し、ユーザーがリストにファイルを追加/リストからファイルを削除できるようにすることです。

var files = [];  // this will contain FileLists

$("button:first").on("click", function(e) {
    $("<input>").prop({
        "type": "file",
        "multiple": true
    }).on("change", function(e) {
        files.push(this.files);
    }).trigger("click");
});

$("button:last").on("click", function(e) {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "/echo/html/", true);
    var data = new FormData();
    $.each(files, function() {  // each FileList
        $.each(this, function() {  // each file inside this list
            console.log("appending %s", this.name);
            data.append("files", this);
        });
    });
    xhr.onreadystatechange = function(e) {
        if(xhr.readyState === 4) {
            console.log("done");
        }
    };
    xhr.send(data);
});
于 2013-02-10T17:45:19.247 に答える
0

回避策として、ファイルの後に別の ファイルを挿入inputして、元のファイルを選択して非表示にすることができます。

于 2013-02-10T16:37:50.557 に答える