是否可以在没有文件输入的情况下使用ActiveStorage?

Mat*_*att 3 ruby-on-rails rails-activestorage

我没有看到有关此事的任何文件,但要详细说明:

我想使用活动存储来上传我的rails应用程序中的文件,而无需使用浏览器的文件输入元素.无论是使用拖放还是各种自定义文件选择器,都可以告诉ActiveStorage上传文件并保存它而不必使用文件输入元素.

另外:afaik,不允许隐藏文件输入并设置文件内容(作为一种解决方法).

这可能吗?有没有人有一个如何在没有文件输入元素的情况下完成这个工作的例子?

Geo*_*orn 9

您可以将该DirectUpload类用于此目的.从您选择的库中接收文件后,实例化a 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
    }
  })
// }
Run Code Online (Sandbox Code Playgroud)

此类是未记录的Rails API在内部的规则的罕见例外.我们还没有到处记录它.