我想让管理员通过 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)