Heroku文件上传问题 [英] Heroku file upload problem
本文介绍了Heroku文件上传问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在将 CSV 文件上传到 Heroku 并进行处理时遇到问题.它在我的本地环境中运行良好.请务必明确,我不需要将文件保存在 Heroku 上,只需在请求期间访问它,以便将其转换为字符串以进行处理并导入数据库.
I've been having a problem uploading a CSV file to Heroku and processing it. It works fine in my local environment. Just do be clear, I don't need to save the file on Heroku, just access it during the request in order to convert it into a string for processing and importing into the DB.
我想做的是:
- 上传 CSV 文件
- 去掉标题块,具体取决于报告来自哪个网络
- 将 CSV 数据读入数据库.这一步工作正常.
控制器代码:
def create
@account = Account.find(params[:report][:account_id])
@file = params[:report][:file].read
# logger.info file.inspect
case @account.provider
when "Microsoft AdCenter" then @file.gsub!(/A(.*)
/im, "")
when "Google AdWords" then @file.gsub!(/A(.*)
/i, "")
else
raise "Invalid PPC report format"
end
end
这是堆栈跟踪:
Processing ImportController#create (for XX.182.6.XXX at 2010-09-11 09:19:01) [POST]
Parameters: {"commit"=>"Upload", "action"=>"create", "authenticity_token"=>"XXXXXwoFpvRO3vN8XVXRDg8rikFsj2TFTW7mrcTgg=", "controller"=>"import", "report"=>{"account_id"=>"1", "file"=>#<File:/home/slugs/126077_0657264_9a92/mnt/tmp/RackMultipart.9845.0>}}
NoMethodError (private method `gsub!' called for #<Tempfile:0x2b8ccb63ece0>):
/usr/local/lib/ruby/1.8/delegate.rb:270:in `method_missing'
app/controllers/import_controller.rb:15:in `create'
warden (0.10.7) lib/warden/manager.rb:35:in `call'
warden (0.10.7) lib/warden/manager.rb:34:in `catch'
warden (0.10.7) lib/warden/manager.rb:34:in `call'
/home/heroku_rack/lib/static_assets.rb:9:in `call'
/home/heroku_rack/lib/last_access.rb:25:in `call'
/home/heroku_rack/lib/date_header.rb:14:in `call'
thin (1.0.1) lib/thin/connection.rb:80:in `pre_process'
thin (1.0.1) lib/thin/connection.rb:78:in `catch'
thin (1.0.1) lib/thin/connection.rb:78:in `pre_process'
thin (1.0.1) lib/thin/connection.rb:57:in `process'
thin (1.0.1) lib/thin/connection.rb:42:in `receive_data'
eventmachine (0.12.6) lib/eventmachine.rb:240:in `run_machine'
eventmachine (0.12.6) lib/eventmachine.rb:240:in `run'
thin (1.0.1) lib/thin/backends/base.rb:57:in `start'
thin (1.0.1) lib/thin/server.rb:150:in `start'
thin (1.0.1) lib/thin/controllers/controller.rb:80:in `start'
thin (1.0.1) lib/thin/runner.rb:173:in `send'
thin (1.0.1) lib/thin/runner.rb:173:in `run_command'
thin (1.0.1) lib/thin/runner.rb:139:in `run!'
thin (1.0.1) bin/thin:6
/usr/local/bin/thin:20:in `load'
/usr/local/bin/thin:20
Rendering /disk1/home/slugs/126077_0657264_9a92/mnt/public/500.html (500 Internal Server Error)
有谁知道为什么它在本地工作得很好,但在 Heroku 上却产生了那个错误?
Anyone know why it works just fine locally but then produces that error on Heroku?
谢谢!
推荐答案
根据 Avishal 的回答,我将其与 Rails 3 一起使用:
Based on Avishal's answer I use this with Rails 3:
@file = IO.read(params[:report].tempfile.path)
这篇关于Heroku文件上传问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文