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



Guy现在我想上传带有 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时,我什么也得不到

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

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

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

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

你可以使用这个:

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新