最近做了一个上传文件的功能 使用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的问题
所以想请问各位大佬 ,这种问题如何解决,同步一次一次请求完再接着请求是没问题的
感激不尽!
给上传最后一片的这次请求加一个特殊参数,上传完后,就在让它在服务器端等待一会,循环监测片是否传齐,不要着急返回结果。如果等了你指定的时间,比如2分钟,还是没发现文件,那就检查缺失哪一片,返回客户端告诉那几片失败了,通知就重新上传。
一般特别大的文件,都是有上传客户端的,不在网页中处理。
你应该是判断保存成功的文件存不存在,比如你在session里弄个的int值,每次执行完保存操作的时候加1,等到session里的值是你上传文件总数的时候就合并。总之思路就是保存完后要在内存中记录,或者直接File.Exist()方法看文件是否存在
方法有很多种,看你自己觉得怎么样好了