0

blueimp/jQueryファイルアップロードコントロール用のカスタムファイルアップロード実装があります。複数のファイルを選択し、そのうちの1つが最大長を超えている場合を除いて、これはうまく機能します。それでも、範囲外のファイルをアップロードしようとします(data.submit()その特定のファイルを呼び出さなくても)。

大きな(送信されていない)ファイルに対してイベントが発生しないことを確認しprogressましたが、サーバーは最終的に404.13(要求フィルタリングモジュールは要求コンテンツの長さを超える要求を拒否するように構成されています)を報告し、他のファイルは報告しません実際に送信されたものがアップロードされます。

jQueryファイルアップロードコントロールを使用して有効なファイルをアップロードする方法を変更し、大きなファイルを無視するにはどうすればよいですか?

これが私のコードです...ノックアウトによって活用されてUI要素を表示するモデルを操作するため、以下のコードにはUI操作は表示されません。

        $('#fileupload').fileupload({
            dataType: 'json',
            url: '/Handlers/UploadHandler.ashx',
            progress: function (e, data) {
                console.log(data.context);
                var progress = parseInt(data.loaded / data.total * 100, 10);
                var file = fileUploadDataModel.files()[data.context];
                file.percentComplete(progress);
            },
            add: function (e, data) {
                $.each(data.files, function (index, file) {
                    var fileModel = new FileModel(file.name, file.size);
                    fileUploadDataModel.files.push(fileModel);
                    data.context = fileUploadDataModel.files().length - 1;

                    if (file.size > opts.maxFileSize) {
                        fileModel.errorMessage('{0} ({1}) exceeds maximum size -- rejected'.format(file.name, friendlyBytes(file.size)));
                        fileModel.percentComplete(0);
                    }
                    else data.submit();
                });
            },
            done: function (e, data) {
                var file = fileUploadDataModel.files()[data.context];
                file.percentComplete(100);
            },
            singleFileUploads: false,
        });
4

1 に答える 1

0

無効なファイルにマークを付け、それらを data.files 配列から削除し、残りを送信することで、これを機能させることができました。これが固定コードです...

        $('#fileupload').fileupload({
            dataType: 'json',
            url: '/Handlers/UploadHandler.ashx',
            progress: function (e, data) {
                console.log(data.context);
                var progress = parseInt(data.loaded / data.total * 100, 10);
                var file = fileUploadDataModel.files()[data.context];
                file.percentComplete(progress);
            },
            add: function (e, data) {
                var itemsToRemove = [];
                $.each(data.files, function (index, file) {
                    var fileModel = new FileModel(file.name, file.size);
                    fileUploadDataModel.files.push(fileModel);
                    fileModel.sourceIndex = fileUploadDataModel.files().length - 1;
                    file.fileModel = fileModel;

                    if (file.size > opts.maxFileSize) {
                        fileModel.errorMessage('{0} ({1}) exceeds maximum size -- rejected'.format(file.name, friendlyBytes(file.size)));
                        fileModel.percentComplete(0);
                        itemsToRemove.push(index);
                    }
                });

                itemsToRemove = itemsToRemove.reverse();
                for (index in itemsToRemove)
                    data.files.splice(itemsToRemove[index], 1);

                $.each(data.files, function (index, file) {
                    data.context = file.fileModel.sourceIndex;
                    data.submit();
                });
            },
            done: function (e, data) {
                var file = fileUploadDataModel.files()[data.context];
                file.percentComplete(100);
            },
            singleFileUploads: false,
        });
于 2013-03-06T17:27:26.430 に答える