作者shelary (喵小咩的新項圈)
看板Ruby
標題Re: [問題] 無法上傳檔案(但win下可以)
時間Sun Jul 6 00:31:53 2008
如果問題是發生在某台主機..
而且小檔案都幾乎可以上傳的話
那你的問題很可能是出在 chunked
你可以在 google 搜尋 "
http chunk" 找到相關資料
主要是當檔案較大時.. http協定會把它拆成數個 chunk
建議你檢查 apache 版本 及 rails 各套件版本是否相容
然後看一下
gem list 裡是否有
cgi_multipart_eof_fix (2.5.0) 這個套件
然後我有看到你的 model 是用 file_column :p_image
你是用資料庫存嗎? 如果是,請確定你資料庫使用的欄位有足夠大能放檔案
如果你要用資料庫存檔案..請用 LONGBLOB (但小妹非常不建議用資料庫存)
而我自己則不是用這種方法
我是重新定義 image=
例如:
# model
def image=(file)
# 檢查檔案長度是否為 0
return if file.length == 0
# 檢查是否為 jpg gif png 檔
return unless /^image\/(p?jpeg|gif|(x-)?png)$/i.match(file.content_type.strip)
# 取得要存放檔案的完整路徑
fullpath = "#{RAILS_ROOT}/public/images/#{file.original_filename}"
# 將檔案寫入硬碟(必須注意 linux 目錄權限是否為 777)
File.open(fullpath, "wb") { |f| f.write(file.read) }
# 將檔名存入 model 裡 image 欄位
write_attribute(:image, file.original_filename)
end
# controller
m = Picture.new
m.image = params[:p_image]
m.save
我用 rails 2.0.1 在 apache 2.2.6 做檔案上傳
在數種主機測試都沒出過任何問題
提供你參考
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.3.21
※ 編輯: shelary 來自: 122.118.3.21 (07/06 00:33)
→ fongse:file_column :p_image 是file_column需要的, 07/06 00:35
→ fongse:存進資料庫的是檔名而已 07/06 00:35
→ fongse:apache是直接用apt-get 安裝的2.2.4版本.. 07/06 01:07
推 godfat:1.8.6 好像不用 cgi_multipart_eof_fix, 不過... 07/06 01:09
→ godfat:這邊好像真的像是 multipart eof 有問題 07/06 01:10
→ fongse:暫時的應急方式也只能請他們用超連結圖片ˊˋ 07/06 11:03