rails4上传文件扩展名错误ActionDispatch :: Http :: UploadedFile

时间:2014-02-09 22:20:10

标签: actiondispatch

盖伊 现在我想用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时我也没有得到任何东西

2 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:0)

您可以使用此:

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

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

因此您根据'.'对其进行了拆分,最后一个索引将包含文件扩展名。

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

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