Rails - ActionDispatch::Http::UploadedFile 在后台作业中
Rails - ActionDispatch::Http::UploadedFile in background job
我使用了与 importing csv and excel Railscast 类似的想法,但由于该集中的标准代码需要一些时间来处理(使用 ActiveRecord 为文件中的每一行创建新记录)我'我在 Heroku 上超时,想将导入过程转移到后台作业。
我未能成功将文件变量(类型为 ActionDispatch::Http::UploadedFile)发送到作业,因此我发送了 file.original_filename 和 file.path[=16 的单个变量=]
作业失败并出现错误 file /var/folders/q3/xn0bp7yd2m56_4lbq0069jj80000gn/T/RackMultipart20150319-72431-1a4pnja.xlsx does not exist
,我认为这是因为文件在作业开始前已被删除为:
Uploaded files are temporary files whose lifespan is one request. When the object is finalized Ruby unlinks the file, so there is no need to clean them with a separate maintenance task.
ActionDispatch::Http::UploadedFile
用ActionDispatch::Http::UploadedFile上传的文件不能在后台作业中使用吗?
我正在使用 Rails 4.2、ActiveJob 和 Resque
不行,上传的文件不能在后台作业中使用。您需要做的是将上传的文件保存到更永久的位置,以便您的后台作业进行处理。
您的控制器将需要:
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
我使用了与 importing csv and excel Railscast 类似的想法,但由于该集中的标准代码需要一些时间来处理(使用 ActiveRecord 为文件中的每一行创建新记录)我'我在 Heroku 上超时,想将导入过程转移到后台作业。
我未能成功将文件变量(类型为 ActionDispatch::Http::UploadedFile)发送到作业,因此我发送了 file.original_filename 和 file.path[=16 的单个变量=]
作业失败并出现错误 file /var/folders/q3/xn0bp7yd2m56_4lbq0069jj80000gn/T/RackMultipart20150319-72431-1a4pnja.xlsx does not exist
,我认为这是因为文件在作业开始前已被删除为:
Uploaded files are temporary files whose lifespan is one request. When the object is finalized Ruby unlinks the file, so there is no need to clean them with a separate maintenance task.
ActionDispatch::Http::UploadedFile
用ActionDispatch::Http::UploadedFile上传的文件不能在后台作业中使用吗?
我正在使用 Rails 4.2、ActiveJob 和 Resque
不行,上传的文件不能在后台作业中使用。您需要做的是将上传的文件保存到更永久的位置,以便您的后台作业进行处理。
您的控制器将需要:
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