首页 新闻 会员 周边

asp.net上传文件获取进度

0
悬赏园豆:100 [待解决问题]

最近工作中,碰到一个问题。文件上传的时候,用的是 input type = ‘file’  标签。文件上传的时候要获取上传的进度数据,前端以进度条的形式展现。在网上找了一些例子,基本上都不是实时返回上传进度数据。求高手指定!最好给出例子。

0小贝的主页 0小贝 | 初学一级 | 园豆:104
提问于:2014-12-11 14:25
< >
分享
所有回答(12)
0

记得以前写的进度条 是 估算时间 然后让它跑的,其实只要结束进度条结束,挺好的

风醉 | 园豆:1197 (小虾三级) | 2014-12-11 14:52

这样不精确吧,特别上传大文件的时候,估算不出来啊。

支持(0) 反对(0) 0小贝 | 园豆:104 (初学一级) | 2014-12-11 14:54
0

上传前先获取文件的大小,然后实时计算收到的文件大小/原始文件大小,不行吗?

ttssrs | 园豆:82 (初学一级) | 2014-12-11 15:21

上传前可以获取文件的大小,那么问题来了,怎么实时计算收到的文件大小?

支持(0) 反对(0) 0小贝 | 园豆:104 (初学一级) | 2014-12-11 15:23
0

上传文件一般是转成二进制流传输,上传前总的大小知道,然后上传过程中比如每传输100k就异步回写一次,前端根据异步回写结果显示进度,当100进度就是上传完成。现在的ajax进度条基本都是这个原理

茂茂 | 园豆:2892 (老鸟四级) | 2014-12-11 15:43

asp.net的文件上传,控制不了文件上传的进度。比如说 HttpFileCollectionBase这个对象,我们怎么知道是啥时候,赋值的。我们在后端调用这个对象的时候,这个对象的文件流已经被赋值了。

支持(0) 反对(0) 0小贝 | 园豆:104 (初学一级) | 2014-12-11 15:48
0

HTML5 的File API才支持。

如果你程序不是html5的话。只能用flash,SL做。

还是有很多上传文件的控件,你找一下就可以了,上传控件也一般用flash,SL做的

Giant150 | 园豆:1165 (小虾三级) | 2014-12-11 16:00

flash是可以做,但是我只想知道单纯靠asp.net跟 ajax 能不能做到,我查了下网上有人说可以做。

支持(0) 反对(0) 0小贝 | 园豆:104 (初学一级) | 2014-12-11 16:16

@0小贝: 不用浪费时间了。

在不支持html5前,一切原生html是不可能知道上传进度,

所有都是用falsh,SL做。

只有HTML5的File API才可以。

支持(0) 反对(0) Giant150 | 园豆:1165 (小虾三级) | 2014-12-11 16:52
0

当今, flash上传文件是首选, 其它的都是徒劳。 

问天何必 | 园豆:3311 (老鸟四级) | 2014-12-11 16:15
0

单靠asp.net+HTML?It's impossible!

蓝色之猫 | 园豆:283 (菜鸟二级) | 2014-12-12 08:51

是的,用html +ajax + asp.net ,不用flash 。网上有人说可以做到 ,定义一个httpModuler 访问HttpWorkerRequest对象。但具体怎么做 ,我还是没弄明白。

支持(0) 反对(0) 0小贝 | 园豆:104 (初学一级) | 2014-12-12 09:04
0

Asp.net 技术内幕上面 有这样一个例子  你可以参考下

wolfy | 园豆:2636 (老鸟四级) | 2014-12-12 11:43

这书里没有这个例子。。

支持(0) 反对(0) 0小贝 | 园豆:104 (初学一级) | 2014-12-12 17:33
0

感觉可以实现.之前没有实现过

watercity | 园豆:208 (菜鸟二级) | 2014-12-12 17:31
0
greystar | 园豆:193 (初学一级) | 2014-12-15 15:09

这个不是真正的数据进度条啊

支持(0) 反对(0) 0小贝 | 园豆:104 (初学一级) | 2014-12-16 08:51
0

看看百度网盘上传,也是估算的时间,进度条到头了,其实文件没有上传完成,不过显示上面人性化一点就可以了。

凡一二三 | 园豆:85 (初学一级) | 2014-12-15 15:16
0

你需要的是 jquery.form

http://jquery.malsup.com/form/#file-upload

页面下方有详细的progress教程

很简单的

楼上的都没做过,有些东西,真的是知识面的问题。

南昌炒粉 | 园豆:760 (小虾三级) | 2014-12-16 11:59

这个 方法IE10 以下的版本支持。

支持(0) 反对(0) 0小贝 | 园豆:104 (初学一级) | 2014-12-16 13:48

@0小贝: 支持啊,必须支持。这个没有浏览器限制的。

支持(0) 反对(0) 南昌炒粉 | 园豆:760 (小虾三级) | 2014-12-16 14:09
0

 我之前看过你的需求,可以实现的,原理是这样的,服务端代码定义一个静态变量来保存进度或将上传的进度保存到ViewState或文件或缓存。并且在服务端定义一个支持Ajax的WebService方法,这个方法返回保存的进度。客户端在上传的过程中,通过js不断调用这个WebService来获取最新的上传进度。

空明流光 | 园豆:106 (初学一级) | 2014-12-16 13:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册