【问题标题】:rails4 upload file extension error ActionDispatch::Http::UploadedFilerails4上传文件扩展错误ActionDispatch::Http::UploadedFile
【发布时间】:2014-02-09 22:20:10
【问题描述】:

家伙 现在我想用 rails 4 上传文件 我的问题现在我无法在上传之前检查文件扩展名

注意:我可以很好地上传文件,但我想在上传之前获取文件类型

因为我需要在我的应用程序的另一个步骤中使用扩展。

我尝试使用命令

File.extname(params[:Upload])

但总是报错

can't convert ActionDispatch::Http::UploadedFile into String

还有如何在上传之前获取文件基名?? 当我尝试使用时

File.basename(params[:Upload])

我遇到了同样的错误

can't convert ActionDispatch::Http::UploadedFile into String

当我尝试将名称转换为 Sting 时,我没有得到任何东西

【问题讨论】:

    标签: actiondispatch


    【解决方案1】:

    那是因为File.extname 需要一个字符串文件名,但是一个上传的文件(你的params[:upload] 是一个对象,它是ActionDispatch::Http::UploadedFile 类的一个实例(一种临时文件)

    要解决问题,您需要调用 params[:upload] 对象上的 path 属性,有点像这样

    File.extname(params[:Upload].path)
    

    顺便说一句,如果你想获取上传文件的类型,我建议你检查params[:Upload].content_type,它更难欺骗

    【讨论】:

      【解决方案2】:

      你可以用这个:

      params[:Upload].original_filename.split('.').last

      original_filename 包含带扩展名的完整文件名。

      所以你根据'.' 拆分它,最后一个索引将包含文件扩展名。

      例如: "my_file.doc.pdf".split('.').last # => 'pdf'

      您可以查看此以获取更多信息ActionDispatch::Http::UploadedFile

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 2015-05-22
        • 1970-01-01
        • 1970-01-01
        • 2018-11-22
        相关资源
        最近更新 更多