0

FineUploaderBasic を使用して、いくつかのアップロード機能をアプリに構築しています。ファイルをキャンセルしようとするとき (onupload コールバック中に条件が満たされたとき) を除いて、すべて問題ありません。次のエラーが表示されます。

TypeError: fileState[id] は未定義です ...var fileOrBlob = fileState[id].file || fileState[id].blobData.blob、

onupload コールバック パラメータ ID は 0 で、名前はファイルの正しい名前です。アップロードの前に onupload プロセスが実行されるため、この時点で多くの fileState 情報がないことは理にかなっています。

ファイル (または複数のファイル) をキャンセルする方法、またはアップローダーを自由にリセットする方法を教えてください。

NB エラーは致命的ではないことも付け加えておく必要があります。実際、機能は正常に動作しているように見えますが、ログにエラーが記録されることはあまりありません。

コードの抜粋:

function UploadButton(element, opts)
{
    this.fineUploaderInst = null;
    this.opts = opts;
    this.element = element;
    var container = this;
    var originalBorder = null;
    var uploader = null;

    this.element.addClass("qq-upload-button");

    this.applyFineUploader = function() {
        this.uploader = new qq.FineUploaderBasic({
            button: this.element[0],
            request: {
                endpoint: "/files/fine-uploader"
            },
            validation: {
                allowedExtensions : this.opts.extensions
            },
            multiple: false,
            callbacks: {
                onSubmit: function() {
                    container.element.find("span.ui-icon")
                        .removeClass("ui-icon-arrowthick-1-n")
                        .addClass("file-uploading");
                },
                onUpload: (opts.onUpload)
                    ? function(id, name) {
                        if(! container.opts.onUpload(id, name)) {
                            container.uploader.reset();
                        }

                        container.element.find("span.ui-icon")
                            .addClass("ui-icon-arrowthick-1-n")
                            .removeClass("file-uploading");
                    }
                    : function(id, name) {},
//... more stuff ...

上記の抜粋の乱雑さについては申し訳ありません。variable要素は jQuery セレクターの結果として入力され、optsは単純なオプションの辞書です。お役に立てば幸いです。

FineUploader 3.4.1 を使用しています。

ありがとう。

4

1 に答える 1

0

前回のコメントで述べたように、onValidateまたはonValidateBatchコールバックを使用して追加の検証を実行してください。これらのコールバックで false を返すと、ファイル ( onValidate) またはバッチ内のすべてのファイル ( ) を無視するように Fine Uploader に指示できますonValidateBatch。これらおよびその他のコールバックの詳細 については、コールバックのドキュメントを参照してください。

于 2013-04-15T13:48:13.583 に答える