簡體   English   中英

Ruby on Rails CSV上傳和導入 - 文件名太長

[英]Ruby on Rails CSV upload&import - File name too long

我想讓管理員通過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文件作為文件名。

有誰知道它為什么這樣做?

BTW: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

它可能與第2行的.read調用有關。不知何故,inputFile轉變為csv的內容而不是文件本身的名稱。 這會讓我相信你設置inputFile變量有問題。 我的猜測是.read沒有像你想象的那樣工作。

當你從params獲得值時,嘗試刪除.read 然后變量inputFile可以將文件路徑傳遞給CSV.foreach

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM