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 を使用しています。
ありがとう。