13

チャンクを有効にしてjQuery-File-Upload プラグインを使用してプログラムによるファイル アップロードを行うと、複数のファイルを送信できません。

私は次のように電話をかけています:

fileUploadWidget.fileupload('send',
{
    files: filesList
})

filesListFile オブジェクトのリストです。

また、 Options wiki pageに示されているように、maxChunkSize を設定し、singleFileUploads を true に設定しました (false も試しました) 。

これを機能させることに成功した人はいますか?

アップデート:

この問題について GitHub でイシューを作成しました。著者からの応答は次のとおりです。

[...] チャンク アップロードは、リクエストごとに 1 つのファイルのみをサポートします。つまり、複数のファイルをまとめて同時にアップロードすることはできますが、そのためには複数のリクエストを送信する必要があります。


私たちのソリューション:

すでにコメントされているように、私たちが最終的に行ったことは、ファイルをループで送信することでした。このファイルは、sequentialUploadsが設定されたwidget状態で初期化されました(バックエンドの構成方法によっては、これが必要になります)。true

// for illustration only
// does not do anything with the returned jqXHR objects
for (i = 0; i < files.length; i++) {
    widget.fileupload('send', { files: files[i] });
}
4

5 に答える 5

2

C# をバックエンドとして使用している場合は、これを試すことができます (クライアント側、JQuery):

 $("#btnUpload").click(function () { // btnUpload is the ID of any button for upload
            var formdata = new FormData(); //FormData object
            var fileInput = document.getElementById('fileInput');
            //Iterating through each files selected in fileInput
            for (i = 0; i < fileInput.files.length; i++) {
                //Appending each file to FormData object
                formdata.append(fileInput.files[i].name, fileInput.files[i]);
            }
            //Creating an XMLHttpRequest and sending
            var xhr = new XMLHttpRequest();
            xhr.open('POST', '/UploadMethod'); // UploadMethod is your back-end code
            xhr.send(formdata);
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    // alert("uploaded");
                    }
            }

        });

次に、 UploadMethod で次のようにします: (ServerSide 、C#)

public void Upload()
        {
            for (int i = 0; i < Request.Files.Count; i++)
            {
                HttpPostedFileBase file = Request.Files[i]; //Uploaded file
                //Use the following properties to get file's name, size and MIMEType
                int fileSize = file.ContentLength;
                string fileName = file.FileName;
                string mimeType = file.ContentType;
                System.IO.Stream fileContent = file.InputStream;
                //To save file, use SaveAs method
                var appPath = HostingEnvironment.ApplicationPhysicalPath + "Documents/" + "_" +  DateTime.Now+ fileName;

                file.SaveAs(appPath); //File will be saved in Documents folder
              }
        }
于 2014-12-10T01:27:40.447 に答える
0

問題はあなたのhtmlにあると思います。ファイルフィールドにこのようなものを使用します

<input type='file' name="pics[]" />

name 属性は配列する必要があり、バックエンドからループで取得できます

于 2015-01-17T01:07:00.717 に答える
0

次のようにする必要があります。

$('collection object').each(function () {
$(this).fileupload({'send',
    files: $(this)
});
});
于 2014-09-13T18:27:23.417 に答える