【问题标题】:How to get the filename of uploaded file in rails controller如何在rails控制器中获取上传文件的文件名
【发布时间】:2014-03-25 15:10:15
【问题描述】:
<%= file_field 'upload' %>

在我的控制器中,如果我根据建议给出以下内容

filename=params[:upload]
@result=filename.original_filename

我得到了。

undefined method `original_filename' for 
#<ActionController::Parameters:0x002b6c396e44b8> 

注意:我没有使用表单。 Rails 版本是 4.0.2

【问题讨论】:

  • 您确定文件正在上传到服务器吗?我问这个是因为你没有使用form 来执行文件上传。
  • @Rohit 根据您的建议,我已包含表格。文件正在上传。但我想单独获取文件名
  • filename.original_filename
  • @Nithin 这就是 #<:parameters:0x002b6c396e44b8> 的未定义方法 `original_filename'
  • @user94962 file upload 关注并实施,就在上周

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


【解决方案1】:

使用以下代码获取文件名:

params[:file].original_filename

【讨论】:

    【解决方案2】:

    你读过如何upload files in Rails吗?您是否将表单设置为multipart: trueparams 中的内容是 StringIOFile(取决于上传的大小)。在该对象上,您将拥有一个 original_filename 属性,即上传文件的文件名。

    编辑:我看到您说您没有使用表单提交...您采取了哪些替代步骤来使其正常工作?

    【讨论】:

    • 如何使用这个 original_filename 属性?
    • 在参数中的对象上调用它,就像上面链接的示例一样:guides.rubyonrails.org/form_helpers.html#uploading-files
    • 当我这样尝试时,这就是 #<:parameters:0x002ad2b8148b78>` 得到的 undefined method original_filename'
    • 如果你在params 上调用original_filename,那是行不通的。您需要在对象 in params 上调用它。
    【解决方案3】:

    您是否为 :upload params 添加了许可

    def some_params
       params.require(:something).permit(:upload)
    end
    

    [参考 Rails 文档] http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-permit

    【讨论】:

    • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
    • 哦,我现在知道了,我对此很陌生,所以我不知道声誉。我只想帮忙。我会得到经验。非常感谢
    【解决方案4】:

    试试:

    params[:pictures][0]["picture_path"].original_filename.split(".").first
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 2020-08-17
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多