首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails - ActionDispatch::Http::UploadedFile中的后台作业

Rails - ActionDispatch::Http::UploadedFile中的后台作业
EN

Stack Overflow用户
提问于 2015-03-19 03:04:20
回答 1查看 4.6K关注 0票数 10

我正在使用与导入csv和excel Railscast类似的想法,但由于该集中的标准代码需要一些时间来处理(使用ActiveRecord为文件中的每一行创建一个新记录),我将在Heroku上获得超时,并希望将导入过程移到后台作业中。

我未能将文件变量(它的类型为ActionDispatch::Http::UploadedFile)发送到作业,因此我发送了file.original_filename和file.path的各个变量

作业失败时出现了错误file /var/folders/q3/xn0bp7yd2m56_4lbq0069jj80000gn/T/RackMultipart20150319-72431-1a4pnja.xlsx does not exist,因为在作业开始之前文件已经被删除,因此我认为该错误正在发生:

上传的文件是临时文件,其生存期为一个请求。当对象完成时,Ruby会取消文件的链接,因此不需要使用单独的维护任务来清理它们。

行动调度::Http::UploadedFile

是否可以在后台作业中不使用ActionDispatch::Http::UploadedFile上载的文件?

我使用的是Rails 4.2、ActiveJob和Resque

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-19 03:17:37

不,上传的文件不能在后台作业中使用。您需要做的是将上传的文件保存到一个更永久的位置,以便您的后台作业进行处理。

您的控制器需要如下所示:

代码语言:javascript
复制
file_path_to_save_to = '/path/to/file'
File.write(file_path_to_save_to, params[:uploaded_file].read)
BackgroundJob.perform_later file_path_to_save_to
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29136542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档