我上傳了一個16 kB PNG圖像到我的Rails開發服務器上的照片數據庫使用attachment_fu,我可以在指向Rails開發的瀏覽器中查看PNG圖像服務器。這部分工作正常。send_file在rails下載最後4KB的16KB文件發送到客戶端
當我將文件下載到我的iPhone應用程序,並期待在方法「didReceiveData」接收到的數據,我有兩個問題:
- 有時最後4 KB的PNG文件被刪除,所以只收到12 kB。
- 其他時間,僅發送4kB或8kB,並且部分PNG圖像不在接收到的4kB或8kB中。
第一次發生在我更改send_file中的參數(如buffer_size爲16kB)並重新啓動服務器時。這讓我覺得開發服務器上會有某種緩存。否則,如果我沒有更改參數並重新啓動服務器,則出現上述#2。
嘗試採用在開發服務器停止緩存,我已經
A)1固定加config/environments/development.rb
:
config.cache_classes = true
config.action_controller.perform_caching = false
B),並在控制器中添加如下代碼:
response.headers.delete("Pragma")
response.headers.delete('Cache-Control')
response.headers["Expires"] = "#{1.year.ago}"
下面是其中send_file
被稱爲在控制器的代碼:
user_photo = Photo.find_by_id(334)
@p = user_photo
send_file("#{RAILS_ROOT}/public" + @p.public_filename,
:disposition => 'inline',
:encoding => 'binary',
:type => @p.content_type,
:stream => false,
:filename => URI.encode(@p.filename),
:buffer_size => 4096
)
我connectionDidFinishLoading方法是這樣的:
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
[theConnectionData release];
}
爲什麼PNG圖像被通過的4kB截斷或零星的文件沒有得到所有發送的任何想法?
根據您的Web服務器和中間件堆棧,發送文件的方式會有很大不同。這發生在你的開發環境中,對吧?你在使用WEBrick,Mongrol,其他嗎? – MDaubs 2011-04-10 01:28:35
我正在使用WEBrick。 – 2011-04-10 02:50:09