通过邮递员通过 API 使用 Rails 主动存储上传文件(.pdf、.jpg 等)? (不通过 Rails 视图)

Posted

技术标签:

【中文标题】通过邮递员通过 API 使用 Rails 主动存储上传文件(.pdf、.jpg 等)? (不通过 Rails 视图)【英文标题】:upload a file(.pdf, .jpg etc) using rails active storage via API through postman? (not through rails views) 【发布时间】:2020-07-29 06:28:21 【问题描述】:

我看到 N 个关于使用 rails 视图 将文件上传到本地活动存储、S3 等的教程。但是我找不到关于如何通过 API 将文件上传到活动存储的合法来源说通过邮递员,比如通过邮递员通过 API 传递附件需要什么先决条件?

让我详细说明一下。

第 1 步: 通过 React 或任何前端框架,我将选择一个要上传的文件(一个 .PDF 文件),最终它应该保存在某个地方。

第 2 步:这个选择的文件应该作为 API 传递给后端服务,在后端服务中选择的文件的存储将保存在 AWS S3 之类的存储中。

如何发送 API 请求来存储文件?有人可以帮我解决吗?

【问题讨论】:

【参考方案1】:

做起来很简单 打开邮递员 转到正文-> 表单数据 之后,将鼠标移至关键字段,您将找到 File 选项

然后你必须选择文件并发送请求

或者像这样发送原始 JSON 对象中的文件路径 然后在后端创建对象,如果文件对象为空,则检查文件对象,然后像这样发送路径

   // For Temporary Use Over Back End Only NOT NEED To Send These 
    "file_path" : "/home/jolly/Downloads/pdf/pdf-5.pdf",
    "file_name" : "pdf-5.pdf"

然后在代码中使用它来创建你传递的文件对象,你需要保存 s3 或 rails 存储

    file_path = params[:file_path]
    file_name = params[:file_name]
    image_path = Rails.root+file_path
    image_file = File.new(image_path)

【讨论】:

以上是关于通过邮递员通过 API 使用 Rails 主动存储上传文件(.pdf、.jpg 等)? (不通过 Rails 视图)的主要内容,如果未能解决你的问题,请参考以下文章

Rails 6主动存储sidekiq文件在S3上上传背景图片

使用 Api 创建 JFROG 存储库

如何使用 ActionCable 在 Rails( api-only ) 应用程序中主动发送消息?

Rails 使用主动存储读取 csv 文件数据

如何使用 Rails 主动存储从 url 保存图像?

使用 JS Fetch API 上传时有效负载过大错误 (413)。通过邮递员工作正常