Rails中上传大文件的问题
在Rails项目中上传文件到服务器时候,是从request中读取到文件的内容后保存在服务器上。
如下:
request.parameters()[:formUploadFile].read.to_s()
但是,如果上传一个1G大小或者更大的文件,用request.parameters()[:formUploadFile].read.to_s()
就会导致内存溢出。不知道rails中有没有办法像java一样从request中读取文件流(file stream),然后再保存到服务器。
谢谢各位啦。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
在上传一个很大的文件的时候,rails会想将文件的数据保存到C盘临时目录下面,然后才调用SvcpostController中的readBinary方法。我的想法就是不用rails保存到临时目录这一步,这样可以提高效率。
相当于Servlet
仅供参考,没试过1G的文件
请问你说的这段代码需要放在哪个地方?
request.body.rewind
还是有问题啊。比如我在我的controller中有个upload_file()方法用来出来文件上传。我上传一个1G大小的文件的时候,rails会先将这个文件的内容保存在C盘下面的一个临时文件中,然后才调用upload_file()方法。有没有可能让浏览器在上传文件的过程中就能调用upload_file啊,别先保存到临时文件。
可参考上传图片的做法
http://developer.51cto.com/art/200912/170559.htm
http://huacnlee.com/blog/rails-plugin-paperclip-for-image-upload
read好像有个参数,
request.parameters()[:formUploadFile].read(1024)可以读取1024 bytes, 还需要试下。