我正在使用dropzone和活动存储来上传文件,直接从客户端将文件上传到s3服务器。目前,我正在通过dropzone的addedfile
事件从dropzone获取文件,并通过new ActiveStorage.DirectUpload(file, url);
上传文件。现在,根据文档,他们提供了一些事件侦听器,我可以使用这些事件侦听器向用户显示上载进度,但是只有当我使用常规表单和提交按钮时,它们才起作用。如果我通过Javascript上传文件,则无法使用。
这是我的代码:
dropzone.on("addedfile", function (file) {
const upload = new ActiveStorage.DirectUpload(file, url);
upload.create((error, blob) => {
if(error) return;
alert('file uploaded');
}
}
addEventListener("direct-upload:start", event => {
console.log('This does not work');
})
答案 0 :(得分:0)
DirectUpload
不调度事件。
DirectUploadController
可以,它使用DirectUpload
进行实际的上载,就像您在示例代码中所做的一样。您无需侦听DirectUploadController
中的事件,因为您可以推断事件将在何时分派。
要执行您期望发生direct-upload:start
和direct-upload:end
事件的操作,请将代码更改为:
dropzone.on("addedfile", function (file) {
const upload = new ActiveStorage.DirectUpload(file, url);
console.log("direct-upload:start")
upload.create((error, blob) => {
if(error) {
console.log("direct-upload:error")
return;
}
}
console.log("direct-upload:end")
}