在ASP.NET中,可以使用AJAX或SignalR来报告文件上传进度。下面是使用AJAX的示例代码:
在前端,使用AJAX发送文件到服务器并报告进度:
function uploadFile() {
var formData = new FormData();
var fileInput = document.getElementById('fileInput');
formData.append('file', fileInput.files[0]);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/Upload/UploadFile', true);
xhr.upload.onprogress = function (e) {
if (e.lengthComputable) {
var percent = (e.loaded / e.total) * 100;
console.log('Progress: ' + percent + '%');
}
};
xhr.onreadystatechange = function () {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
console.log('Upload complete!');
} else {
console.log('Upload failed!');
}
}
};
xhr.send(formData);
}
在后端,创建一个控制器来处理文件上传:
public class UploadController : Controller
{
[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
// 处理文件上传
// 可以在这里获取文件大小并进行进度报告
// ...
return Json(new { success = true });
}
return Json(new { success = false });
}
}
在上述代码中,使用XMLHttpRequest.upload.onprogress
事件来监听文件上传进度,并使用console.log
在控制台输出进度信息。
请注意,由于安全限制,AJAX只能获取文件上传的进度,无法获取上传文件的大小。如果需要获取文件大小并实时报告进度,可以使用SignalR来实现。