我使用attachment_fu将16 kB PNG图像上传到我的Rails开发服务器上的照片数据库中,我可以在指向Rails开发服务器的浏览器中查看PNG图像。这部分工作正常。
当我将文件下载到我的iPhone应用程序,并查看方法“didReceiveData”中收到的数据时,我有两个问题:
第一种情况发生在我将send_file中的参数(如buffer_size更改为16kB)并重新启动服务器时。这让我觉得开发服务器正在进行某种缓存。否则,如果我没有更改参数并重新启动服务器,则会发生上面的#2。
要通过在开发服务器中停止缓存来尝试修复1,我
A)已添加到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截断或者偶尔会发送文件的任何想法?
答案 0 :(得分:1)
我想,这是不使用
的情况- (void)connectionDidFinishLoading:(NSURLConnection *)connection
连接成功加载后发送。
我认为最好在完成后检查完成的图像大小,而不是担心服务器设置。