如何在调用resizeImage()后调用transformFile()中的"done()"函数?
How to invoke "done()" function in transformFile() after calling resizeImage()?
我对 DropzoneJS 有疑问。这是关于方法transformFile
。我使用此方法计算 MD5 并生成预签名上传 URL 到 S3。
当我不需要调整图像大小时它工作得很好,但当我必须这样做时,Dropzone 不会继续上传 - 它只生成 MD5 和预签名 URL。我知道我应该调用 done()
函数,但我不确定在我的情况下该怎么做。
这是我的实现:
transformFile: async function transformFile(file, done) {
if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
//return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);
return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, async function (result) {
file.md5 = await calculateMD5(result);
file.presign = await initUpload(file.name, file.type, file.md5);
return result;
});
} else {
file.md5 = await calculateMD5(file);
file.presign = await initUpload(file.name, file.type, file.md5);
return done(file);
}
},
这是来自 Dropzone 的原始版本:
transformFile: function transformFile(file, done) {
if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);
} else {
return done(file);
}
},
我特别需要用这种方法或以后的方法来做,但我很确定这是我生成 MD5 和预签名 URL 的最后可能时刻。任何帮助将不胜感激。
transformFile: async function transformFile(file, done) {
if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, async function (result) {
file.md5 = await calculateMD5(result);
file.presign = await initUpload(file.name, file.type, file.md5);
done(result);
});
} else {
file.md5 = await calculateMD5(file);
file.presign = await initUpload(file.name, file.type, file.md5);
return done(file);
}
},
我对 DropzoneJS 有疑问。这是关于方法transformFile
。我使用此方法计算 MD5 并生成预签名上传 URL 到 S3。
当我不需要调整图像大小时它工作得很好,但当我必须这样做时,Dropzone 不会继续上传 - 它只生成 MD5 和预签名 URL。我知道我应该调用 done()
函数,但我不确定在我的情况下该怎么做。
这是我的实现:
transformFile: async function transformFile(file, done) {
if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
//return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);
return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, async function (result) {
file.md5 = await calculateMD5(result);
file.presign = await initUpload(file.name, file.type, file.md5);
return result;
});
} else {
file.md5 = await calculateMD5(file);
file.presign = await initUpload(file.name, file.type, file.md5);
return done(file);
}
},
这是来自 Dropzone 的原始版本:
transformFile: function transformFile(file, done) {
if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);
} else {
return done(file);
}
},
我特别需要用这种方法或以后的方法来做,但我很确定这是我生成 MD5 和预签名 URL 的最后可能时刻。任何帮助将不胜感激。
transformFile: async function transformFile(file, done) {
if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, async function (result) {
file.md5 = await calculateMD5(result);
file.presign = await initUpload(file.name, file.type, file.md5);
done(result);
});
} else {
file.md5 = await calculateMD5(file);
file.presign = await initUpload(file.name, file.type, file.md5);
return done(file);
}
},