是否可以在没有文件输入的情况下使用 ActiveStorage?
Is it possible to use ActiveStorage without a file input?
我还没有看到关于此事的任何文件,但要详细说明:
我想使用活动存储在我的 rails 应用程序中上传文件,而无需使用浏览器的文件输入元素。无论是使用 Drag/Drop 还是各种自定义文件选择器,最好告诉 ActiveStorage 上传文件并保存它而无需使用文件输入元素。
此外:据我所知,不允许隐藏文件输入并设置其文件内容(作为一种变通方法)。
这可能吗?有没有人举例说明如何在没有文件输入元素的情况下完成此操作?
您可以使用 DirectUpload
class 来达到这个目的。从您选择的库中接收到文件后,实例化一个 DirectUpload
并调用其 create
方法。 create
在上传完成时调用回调:
import { DirectUpload } from "activestorage"
// on file selection/drop {
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
}
})
// }
这 class 是未记录的 Rails API 是内部的规则的罕见例外。我们只是还没有开始记录它。
我还没有看到关于此事的任何文件,但要详细说明:
我想使用活动存储在我的 rails 应用程序中上传文件,而无需使用浏览器的文件输入元素。无论是使用 Drag/Drop 还是各种自定义文件选择器,最好告诉 ActiveStorage 上传文件并保存它而无需使用文件输入元素。
此外:据我所知,不允许隐藏文件输入并设置其文件内容(作为一种变通方法)。
这可能吗?有没有人举例说明如何在没有文件输入元素的情况下完成此操作?
您可以使用 DirectUpload
class 来达到这个目的。从您选择的库中接收到文件后,实例化一个 DirectUpload
并调用其 create
方法。 create
在上传完成时调用回调:
import { DirectUpload } from "activestorage"
// on file selection/drop {
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
}
})
// }
这 class 是未记录的 Rails API 是内部的规则的罕见例外。我们只是还没有开始记录它。