我想让管理员通过 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/