首页 新闻 赞助 找找看

C# 异步上传html5 FormData文件

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

最近做了一个上传文件的功能  使用html5 FormData上传文件

使用$.ajax请求去上传分片文件

参考的是如下网址:http://boytnt.blog.51cto.com/966121/1552759/

写的例子是没有问题

但是把这个功能移到项目中去 代码都一样 就改了上传路径 文件能上传上来

功能移到项目 用的是同步方式,异步方式有问题 但是效率低点 而且占用cpu较大

问题:

     异步上传分片文件,假如文件名为 file.rar 有10M 

     分为2M为一片   切片规则为文件名 _索引
     所以切成了file.rar_1 file.rar_2 file.rar_3 file.rar_4 file.rar_5

      当上传的当前片数索引等于总片数  就合并这些分片文件

      但是由于是异步 它还没保存好所有切片文件
      上传的当前片数就等于了总片数 也就是上传到了最后一片了 

      然后由于还没全部保存好切片文件 就报没有找到切片文件 

file.rar_index的问题

 

所以想请问各位大佬 ,这种问题如何解决,同步一次一次请求完再接着请求是没问题的

感激不尽!

又是没有bug的一天的主页 又是没有bug的一天 | 初学一级 | 园豆:149
提问于:2017-06-14 17:45
< >
分享
所有回答(2)
0

给上传最后一片的这次请求加一个特殊参数,上传完后,就在让它在服务器端等待一会,循环监测片是否传齐,不要着急返回结果。如果等了你指定的时间,比如2分钟,还是没发现文件,那就检查缺失哪一片,返回客户端告诉那几片失败了,通知就重新上传。

一般特别大的文件,都是有上传客户端的,不在网页中处理。

荆棘人 | 园豆:410 (菜鸟二级) | 2017-06-14 19:09
0

你应该是判断保存成功的文件存不存在,比如你在session里弄个的int值,每次执行完保存操作的时候加1,等到session里的值是你上传文件总数的时候就合并。总之思路就是保存完后要在内存中记录,或者直接File.Exist()方法看文件是否存在

方法有很多种,看你自己觉得怎么样好了

Sugar★ | 园豆:203 (菜鸟二级) | 2017-06-14 19:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册