我在我的 ASP.NET 网站上使用基于 Ajax 的 Fileupload 来上传带有进度的大文件并启用多文件上传。代码看起来像这样
JavaScript
<script type="text/javascript">
var ufiles;
$(document).ready(function () {
$("#fufile").change(function () {
if (this.files.length > 0) {
fupl(0);
}
});
});
function fupl(index) {
currcount = index + 1;
if (ufiles != null && ufiles.length > index) {
var formData = new FormData();
if (ufiles[index].size > 200000000) {
fupl(index + 1);
}
else {
formData.append("file", ufiles[index]);
$.ajax({
url: window.location.pathname,
type: 'POST',
xhr: function () {
myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', progressHandlingFunction, false);
}
return myXhr;
},
success: function (data) {
fupl(index + 1);
},
error: function (xhr, ajaxOptions, thrownError) {
},
data: formData,
cache: false,
contentType: false,
processData: false
});
}
}
};
function progressHandlingFunction(e) {
if (e.lengthComputable) {
}
}
</script>
我还尝试了一个 JavaScript 代码,它在没有表单数据的情况下迭代输入控件中的文件,但我得到了相同的结果 - 当您单击上传按钮时,有时它可以工作,有时上传会挂在 2-3 之类的地方% 进步。我已经在不同的 IIS 服务器上尝试过,不同的代码,但我没有得到可靠的文件上传。有什么建议么?
只是为了完整性 C#
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (HttpContext.Current.Request.Files.Count > 0)
{
Request.Files[0].SaveAs( Foopath + Files[0].FileName);
Response.Write(true);
}
}
catch
{
Response.Write(false);
}
}