ruby-on-rails - Ruby on Rails CSV 上传和导入 - 文件名太长

标签 ruby-on-rails ruby csv

我想让管理员通过 csv 文件将联系人导入数据库。因此,我正在使用 ruby​​ csv 库和以下代码片段:

 if request.post? && params[:file].present?
     inputFile = params[:file].read
     CSV.foreach(inputFile) do |row|
         #save row here
     end
 end

然而,在 CSV.foreach(inputFile) do |row| 中,我得到一个“Errno::ENAMETOOLONG - 文件名太长”错误,错误消息显示它使用了整个 csv文件作为文件名。

有谁知道它为什么这样做?

顺便说一句:csv 文件使用“,”和“/n”作为分隔符。

最佳答案

感谢其他答案的输入,我自己找到了解决方案。问题是 .read 将文件转换为包含内容的字符串,但 CSV.foreach() 需要文件名或路径。使用 .path 解决了这个问题:

 if request.post? && params[:file].present?
     inputPath = params[:file].path
     CSV.foreach(inputPath) do |row|
         #save row here
     end
 end

关于ruby-on-rails - Ruby on Rails CSV 上传和导入 - 文件名太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18620507/

相关文章:

Java,将 CSV 的每一行转换为字符串

css - 背景图像 css 在 Rails 应用程序中不起作用

ruby-on-rails - Rails 4 中的 ForbiddenAttributesError

ruby - 如何在范围内使用模型方法?

sql - Rails 迭代查询到 SQL 语句

r - 将表格从 R 获取到 Libre Office Writer 的最佳方法?

ruby-on-rails - Ruby 1.9.1-p234、Passenger 2.2.5、Rails 2.3-stable 在 POST 请求时关闭流

ruby-on-rails - 每次 Elasticsearch 过程在本地重新启动时,我都必须重新索引所有文档

在 Windows 上使用 gitbash shell 的 ruby​​ irb - 不能使用箭头键修改命令输入?

sql - PSQL 选择以逗号分隔的结果加入连接