3

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

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

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

这可能吗?有没有人有一个没有文件输入元素的例子?

4

1 回答 1

9

您可以DirectUpload为此目的使用该类。从您选择的库中接收到文件后,实例化 aDirectUpload并调用其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
    }
  })
// }

此类是未记录的 Rails API 是内部规则的罕见例外。我们只是还没有开始记录它。

于 2018-03-14T21:33:00.000 回答