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