我迷路了...只要字节数等于或小于 4193813 且文件名为 11 个字符,ng-file-upload 就可以完美运行。如果上传大小增加一个字节,则标头会发送到服务器,但不会发送到文件。
我的代码在客户端与 Danial 的示例相同。在后端,我正在运行 West-Wind.com Web Connection,这是一个 Microsoft Visual Foxpro Web 服务器。
与 Fiddler 一起看,除了内容长度的字节数外,我的工作测试和损坏的测试看起来都是一样的。
我查看了 IIS7 请求过滤并看到设置了默认的 30mb 大小。还尝试将其设置为 16mg,但没有任何区别。
我想知道这是否是块大小限制和/或我没有正确处理标头中后端的某些内容……但这只是目前的猜测。
任何想法下一步转向哪里将不胜感激。
...基于反馈意见,这是我的代码片段:(假设现在,多个文件不可能是下面的文件 [0])
Upload.upload({
url: 'postback794.wcsx',
fields: oFileFlds,
file: files[0]
}).then(function (response) {
// the postback now includes valided uploads
console.log('upload complete');
}, function (response) {
//error
console.log('Error status:' + response.status);
}, function (evt) {
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
console.log('progress: ' + progressPercentage + '% ' + evt.config.file.name);
_this.DisplayMessage = 'progress: ' + progressPercentage + '% ' + evt.config.file.name;
});
这是HTML:
<button class="btn btn-primary pull-left"
multiple
ngf-select
accept="text/plain, image/*, application/pdf, application/msword"
ng-model="VendorsController.AddlDocsFile"
title="Click here to upload one or more documents.">
Upload Document(s)
<i class="fa fa-upload" style="font-size:14px; margin:3px;"></i>
</button>
在服务器上:
DO WHILE !FEOF(lhFile)
lcCommandLine = lcCommandLine + FREAD(lhFile,16484)
ENDDO
我将假设 VFP 代码不熟悉,FREAD 是一个低级命令,它读取由句柄 (lhFile) 指定的文件的一些字节数(在本例中为 16484)。当到达文件结束标记时,FREAD 终止并且 DO 循环结束。然后 lcCommandLine 应该准备好解析整个命中。
在 ng-file-upload 工作的情况下,我可以看到所有的测试上传。当字节数高于断点时,情况并非如此,lcCommandLine 值在没有任何文件上传数据的情况下被切断(HTTP_CONTENT_LENGTH=906)。