resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

时间:2023-07-19 09:39:02

在git上提供了java、nodejs、c#后台服务方式;在这里我要用c#作为后台服务;地址请见:https://github.com/23/resumable.js

我现在visual studio的环境是2013,mvc4,framwork4.0;我们来看git上给出的c#示例:

samples/DotNET/ 在文件中包含两个文件Controllers Models,在两个文件里各有一个文件;

我把他部署到自己项目里边,却没有达到自己预定的效果,我是这样更改的;

一、我先把我的类库项目调成framwork4.5支持controllers中的代码不然的话代码画红线:

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

二、我把mvc5某些特性的标签改成mvc4相关的,我把其中【NoAction】等的给去掉了;诸如:

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现改成resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

三、然后我把java里的测试html考到我的项目中去,作为测试页面;跑起来后发现分块文件上传正常,但是最后文件也不全;

就是最终的文件和我上传的不一致,不是多了就是少了;

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

index.html中我把target改成自己的请求地址。

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

四、通过反复调试我发现其中后台代码中这个参数始终是1.

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

最后测试得知这个参数压根就没传,但是后台还是根据这个参数计算的上传及合并次数;有了这个线索之后

五、找到resumable.js这个文件,找到发送请求的地方:

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

着重显示的部分是我新加的参数,根据参数自己计算了下通过 文件总大小/每次上传大小  计算出该文件上传成功后需要分为几块。可以根据行数自行调整。

上边这个请求是判断文件块是否存在;

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

着重画线的部分是我新加的参数;

六、通过调试,后台也要做相应调整。

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

在删除临时文件方法中加入了进程暂停;

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

七、跑程序测试。最终的结果是文件上传成功后,会每隔1000毫秒删除一个块文件。上传的文件和最终upload中的文件大小一致;

最终结果:图示:

resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现

源代码下载:http://files.cnblogs.com/files/gaolizhong/csharp%E6%96%AD%E7%94%B5%E7%BB%AD%E4%BC%A0.7z