3

Uploadify を実行して、アップロード キューをクリアし、アップロードされたファイルを削除しようとしています。問題はこれです。5 つのファイルを ( uploadLimit5 つのセットで) アップロードすると、最初にアップロードされます。しかし、これを使用してキューをクリアすると:

<a class="button" href="javascript:jQuery('#attachment').uploadify('cancel', '*');">Clear Upload Queue</a>

画面からファイルを視覚的に削除しますが、それ以上ファイルをアップロードすることはできません。私は使用してみました:

jQuery('#attachment').uploadify('settings', 'uploadLimit', 5)onQueueClearしかし、それはリセットしませんuploadLimituploadLimitキューがクリアされた後、どうすればリセットできますか? これが私のコードです:

jQuery('#attachment').uploadify({
    swf: '/javascript/uploadify/uploadify.swf',
    uploader: '/javascript/uploadify/uploadify.php',
    uploadFolder: 'temp',
    uploadTime: UPLOAD_TIME,
    uploadToken: UPLOAD_TOKEN,
    cancelImage: '/javascript/uploadify/cancel.png',
    fileTypeExts: '*.jpg; *.gif; *.png; *.jpeg; *.doc; *.docx; *.zip; *.pdf; *.xls; *.xlsx; *.JPG',
    fileTypeDesc: 'Allowed Files',
    auto: true,
    multi: true,
    removeCompleted: false,
    simUploadLimit: 1,
    fileSizeLimit: '3MB',
    allowedFiles: '*.jpg; *.gif; *.png; *.jpeg; *.doc; *.docx; *.zip; *.pdf; *.xls; *.xlsx; *.JPG',
    // allowedFiles:    '*.cdt;*.con;*.doc;*.docx;*.dxd;*.gif;*.jpg;*.jpeg;*.key;*.lab;*.mov;*.mp4;*.m4v;*.pdf;*.png;*.pps;*.ppt;*.pptx;*.rst;*.txt;*.wmv;*.xls;*.xlsx;*.zip',
    uploadLimit: 5,
    width: 210,
    height: 40,
    buttonText: 'Click to Add Up to 5 Attachments',
    buttonImage: '/images/content/mail/add-attachments.png',
    onUploadStart: function (file) {
        jQuery('.submit').attr('disabled', 'disabled');

        if (parseInt($.cookie('size')) > 0) {
            $.cookie('size', parseInt($.cookie('size')) + file.size);
        } else {
            $.cookie('size', file.size);
        }

        if (parseInt($.cookie('size')) > 30000000) {
            alert('You have exceeded the maximum queue size.  Please delete one or more files from your upload.  You can clear your queue by clicking the button below.');
            jQuery('#attachment').uploadify('cancel', '*');
        }
    },
    onUploadSuccess: function (file, data, response) {
        jQuery('.submit').removeAttr('disabled');

        try {
            obj = jQuery.parseJSON(data);
            if (obj.success) {
                jQuery('#' + file.id).append('<input type="hidden" name="temp_image_path[]" value="' + obj.file.name + '" /><input type="hidden" name="original_name[]" value="' + obj.file.original_name + '" />');
            }
        } catch (e) {
            // do nothing
        }


    },
    onUploadError: function (file, errorCode, errorMsg, errorString) {
        alert('The file ' + file.name + ' could not be uploaded: ' + errorString);
    },
    onQueueComplete: function () {
        jQuery('.submit').removeAttr('disabled');
    },
    onClearQueue: function (queueItemCount) {
        //jQuery('.submit').attr('disabled', 'disabled');
        var file = (queueItemCount == 1) ? 'file has' : 'files have';
        alert(queueItemCount + ' ' + file + ' been removed from your upload queue.  You have no files pending upload.');
        $.cookie('size', 0);
        jQuery('#attachment').uploadify('settings', 'uploadLimit', 5);
    },
    formData: {
        'filetypes': '*.jpg; *.gif; *.png; *.jpeg; *.doc; *.docx; *.zip; *.pdf; *.xls; *.xlsx; *.JPG',
            'folder': 'temp',
            'time': UPLOAD_TIME,
            'token': UPLOAD_TOKEN
    }
});
4

2 に答える 2

5

すぐに使えるソリューションも見つかりませんでした。cancelこの方法は、まだアップロードされていないファイルにのみ影響します。

アップロードされたファイル (またはすべてのファイル) を削除するためのカスタム ハンドラーを用意することをお勧めします。unlinkコールの近くのどこか 。また、5 にリセットすることはできませんが、削除されたファイルの数uploadLimitだけ増やすことができます。uploadLimit

ただし、uploadify オブジェクトには、アップロードされたファイルに関する情報がまだあります。つまり、ユーザーが同じファイルを読み込もうとすると、重複ファイルに関する警告メッセージが表示されます。このコレクションをクリアできます:

var files = $('#attachment').data('uploadify').queueData.files = [];
for (var member in files) delete files[member];

コードから使用するのは正しくないかもしれませんが、プラグインを拡張できます。

于 2013-08-22T15:15:04.173 に答える
0

Grin が言ったように、cancel メソッドはまだアップロードされていないファイルにのみ影響します。

キューがアップロード制限に達したかどうかを確認するためにプラグインが使用する値を編集する方法を見つけました。

$('#attachment').data('uploadify').uploads.count

アップロードされた画像を削除するときにそのフィールドを編集できます

//on method that removes an image
$('#attachment').data('uploadify').uploads.count--;

これ以降、プラグインはファイルのキューのサイズをチェックするために残りの作業を行います。また、プラグイン オプションの編集を避けています。

于 2016-03-15T15:51:50.277 に答える