2015-08-28 18 views
0

服务器红宝石怎样才能多文件下载到服务器的同时,检查上传过程(我的意思时左)同时进行多个远程文件下载到在轨道上

on Rails应用程序我有多个文本字段,它们是用于远程文件像www.example.com/abc.pdf等网址,这些所有文件应该下载到temp_uploads文件夹。

为此,我已经在远程文件控制器(如下所示)中编写代码。

def remotefiles 
    params[:reference_file_url].each do |rfile| 
     temp_file = File.new("/public/temp_uploads", "w") 
     open(temp_file, 'wb') do |file| 
      file << open(rfile).read() 
     end 
    end 
end 

其中的RFile是远程文件的URL。

我也定义了路由remotefiles调用它在阿贾克斯

我Ajax调用的序列化格式发送表单数据和该控制器下载的所有文件1加1

与此代码我不得不等待,直到所有的文件都被下载到显然不可接受的文件夹中(我的意思是客户端通过同时下载所有文件来减少等待时间)

有没有什么方法可以完成,我的所有代码都是自定义的,任何宝石

回答

1

对于本地文件上传: http://blueimp.github.io/jQuery-File-Upload/

对于远程文件下载: 您可以使用一个名为Sidekiq宝石写这会使用HTTP下载的每个文件后台作业。然后通过浏览器的ajax更新Redis状态并轮询该状态。

下载,您可以使用HTTPParty

require "httparty" 

File.open("myfile.txt", "wb") do |f| 
    f.write HTTParty.get(remote_file_url).response 
end 
+0

其从本地系统上传文件,是否有可能将其用于远程文件以及文件? –

+1

仅限本地系统。对不起,您正在寻找从URL下载文件,而不是上传。为此,我会使用像Sidekiq这样的后台工作人员,然后使用像HTTParty这样的http库来下载每个文件。对于多个文件,您可以使用每个文件后面的状态更新Redis,并通过ajax轮询状态客户端。 – dinomix

+0

我会试一试! –

相关问题