ruby-on-rails - 将上传文件的路径存储在数据库中

标签 ruby-on-rails ruby database file-upload

我一直在尝试进行简单的文件上传,但我找不到可以做到这一点的 gem,所有这些似乎都围绕着 图片。我只想要基本的 .zip 文件上传。有人可以指导我执行此操作的 gem 或构建您自己的自定义的教程 上传。但是,如果没有,我会创建自己的文件上传,但我会遇到以下问题

问题:

当用户点击上传按钮时,我如何将文件的路径存储在数据库中?

场景如下:

表单由以下部分组成:

Title box:
File select box:
Upload button:

数据库表只包含两列,标题(Title)和文件系统上的文件路径(FilePath)

用户填写标题,浏览系统中的文件,点击上传按钮,文件需要 存储在磁盘上,假设 /public/uploads/file1.zip 同时将上传的标题写入 mysql 数据库以及 现在位于 /public/uploads/file1.zip.

中的实际文件的路径

在另一个页面上,我可以简单地查询数据库以检索标题和文件路径,这将显示标题和文件的链接/路径,用户只需单击并下载即可。

在页面上会显示如下:

标题 - 下载

即第 27 届 session 文件 - 下载

其中“标题”= 用户提交的文件标题,“下载”= 您可以单击的实际链接,将从磁盘中检索文件 并开始下载。这需要是从数据库检索标题和文件路径的查询。查询的 我知道该怎么做的部分。它只是将文件上传到该目录的一部分,将特定文件的目录存储在数据库中,并且它是用户提交的标题。

如有任何建议、示例和资源,我们将不胜感激。感谢您的宝贵时间。

最佳答案

阅读uploading files来自 rails guides然后阅读 CarrierWave README .基本上是:

# in the model
mount_uploader :archive, ArchiveUploader, mount_on: :archive_path

# in the controller action
@record = YourModel.new(params[:record]) # moves the file from server upload path to CW cache dir
@record.save # moves the file from CW cache dir to final fs dir, and stores path in mounted_on column

# in the form
<%= f.file_field :archive %>

# in the view
<%= link_to 'Download', @record.archive_url %>

文件系统路径将存储在您挂载的表列中。

关于ruby-on-rails - 将上传文件的路径存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9464150/

相关文章:

ruby-on-rails - twitter-bootstrap-rails gem 工作流程

ruby-on-rails - scrypt 2.0.2 构建失败

database - LS-00103 : Encountered the symbol "end-of-file pragma procedure form

mysql - 环境中的 Ruby on Rails MySQL 套接字

ruby-on-rails - Rails 4.1 枚举和简单形式 : how to translate them?

ruby-on-rails - Arel:从函数中选择

ruby - 如何使用 ruby​​ ffi 在 ruby​​ gem 中调用自定义 C 代码

mysql - 数据库:类别特征的设计模式

mysql - 我收到保存点 'unrecogniszed statement type' 错误

jquery - 学习 Rails 的 jQuery 和 AJAX