WalleZhang
2010-10-05 13:55
浏览 278
已采纳

如何用Rails如何做下载进度条?

做了一个可以批量下载百度搜索出来图片结果的小程序。
填入结果地址之后,通过分析找到图片的原始地址,然后开始下载。
填入结果地址之后用post提交到下载的action1里面开启一个线程开始下载图片。
在View里面用JavaScript设置了一个定时器,每隔一段时间去请求action2,但是在action2里面如何获得已经下载的图片数量呢并返回给View里面的JavaScript呢?正在下载的线程里面有一个对象,其中一个变量可以记录已经下载的图片数量,但是在action2中好像没法访问这个正在执行的线程。。

有点乱,谁能提供一个大概的思路也可以~

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Hooopo 2010-10-05 14:43
    已采纳

    ps:上面这个没考虑一个用户同时下载多个的情况、、、
    如果考虑这种需求,就要在客户端生产一个唯一标识传到服务端。。然后把key设成:
    ProcessBar_userID_UniqID

    单个文件下载百分比可以参考迅雷的做法,主要是通过http协议的range头

    点赞 评论
  • Hooopo 2010-10-05 14:01

    你的下载进度的意思是:一共有n张图片,现在下载了几张?
    还是有一张图片。现在下载了这张图片的百分比?

    点赞 评论
  • Hooopo 2010-10-05 14:34

    如果是第一种情况那就很简单了。
    利用线程共享变量意义不大,不如直接写全局变量
    Action1:
    #开始下载
    #每个线程下载结束更新全局变量
    Rails.cache.write("ProcessBar_" + current_user.id.to_s, {:total => n, :finished => m})

    Action2:
    process_info = Rails.cache.read(("ProcessBar_" + current_user.id.to_s)
    process_percent = process_info[:finished] / process_info[:total].to_f

    点赞 评论

相关推荐 更多相似问题