import { DirectUpload } from "activestorage"
// on file selection or change {
const url = element.dataset.directUploadUrl
const upload = new DirectUpload(file, url)
upload.create((error, blob) => {
if (error) {
// Handle the error
} else {
// Add an appropriately-named hidden input to the form with a value of blob.signed_id
$('<input>').attr({
type: 'hidden',
name: 'your_object[files][]',
value: blob.signed_id
}).appendTo('form');
}
})
// }
2 回答
是的,可以使用“DirectUpload”类的activestorage . 它是一个javascript类,由activestorage在内部用于创建文件对象并直接将其上载到指定的服务上 .
您可以使用处理文件更改事件和创建“DirectUpload”类的对象,在附加文件后立即创建直接上载文件 .
这是一个简短的例子
执行上传到activestorage后,您可以使用提交表单
这会将这些上传附加到您的rails模型对象 . 请记住,您必须在其中更新带有签名ID的表单,否则它不会将上载附加到您的模型对象 .
我最近在我的一个项目中使用过上述流程 .
我不认为它内置在Active存储中 . 我还没有读过Active存储中的任何此类功能 .
基本上,Active存储开发背后的想法是为载波/回形针提供内置替代品,并在 Cloud s3 / google Cloud 上直接上传 .
可以使用一些JS . 因为您可以通过创建图像部分手动提交作为单独的表单并使用javascript提交它 .