【问题标题】:Using uploaded file in Rails在 Rails 中使用上传的文件
【发布时间】:2012-11-12 07:22:19
【问题描述】:

我允许用户在 Rails 中将文件上传到我的网站

<div id="file_upload">
  <input type="file" name="user_file">
</div>

现在,在控制器中,我想将此文件传递给 Ruby system call。我想要的命令是

system("wget", "-i", **filename**)

应该用什么代替**filename**

【问题讨论】:

  • 我建议在 rails 应用程序中使用 carrierwave 进行文件上传 (github.com/jnicklas/carrierwave)
  • 是的...这似乎不是一个好方法。你也可以给 filepicker.io 一个机会。可能适合您的需求。
  • 对不起,为什么我的方法不好?有什么不好的?
  • 这取决于您打算如何处理文件以及您希望如何在应用程序中使用它们。它们是否会存储在服务器上,它们将如何与您的模型相关,您是否希望将它们放在云中进行存储,例如 s3。我想这只是文件上传是许多网络应用程序的生计,所以不要重新发明轮子,检查已经完成的工作,如上述和许多其他应用程序,然后选择一个适合您需要的。如果你愿意,自己做也没有错。
  • @cih 是的,我只想将它传递给system 命令,仅此而已。所以我不想使用任何额外的东西......

标签: ruby-on-rails ruby file upload


【解决方案1】:

首先你需要确保你的表单标签有 enctype="multipart/form-data" - 否则它不会工作。

在控制器中你可以像这样访问文件

@filename = params[:user_file].original_filename
@file_data = params[:user_file].read

【讨论】:

    【解决方案2】:

    假设您比 cmets 中提到的其他选项更喜欢此选项,您可以执行此类操作。

    File.open("tmp/filename.ext", "w") do |f|
     f.write(params[:file].read)
    end
    
    system("wget", "-i", "tmp/filename.ext")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多