【发布时间】:2019-07-07 20:32:31
【问题描述】:
我正在尝试通过使用 jQuery 将表单发布到我的控制器操作方法来从 javascript 上传文件。我不想等待结果,想立即返回。这就是我打电话给Task.Factory.StartNew 并返回布尔值的原因。但我收到错误“无法访问任务正文中的已关闭文件!”。请指教。
[HttpPost]
public bool UploadAll(HttpPostedFileBase fileSelect)
{
Task.Factory.StartNew<string>((st) =>
{
var file = st as HttpPostedFileBase;
if (file != null)
{
// Here is where I get the error "cannot access the closed file!"
file.SaveAs("E:\\" + file.FileName);
return file.FileName;
}
return string.Empty;
}, fileSelect).ContinueWith((tsk) =>
{
Debug.WriteLine(tsk.Result);
});
return true;
}
客户端
$(function () {
//getAllVideos();
$('#upload').submit(function (e) {
e.preventDefault();
var files = $("#fileSelect")[0].files;
if (files.length > 0) {
if (window.FormData !== undefined) {
var formData = new FormData($(this)[0]);
$.ajax({
url: uploadUrl,
method: "post",
cache: false,
contentType: false,
processData: false,
data: formData
}).done(function (result) {
alert(result);
}).fail(function () {
});
});
});
}());
【问题讨论】:
-
如果选择了多个文件,我不想等待它们被上传。相反,我想在后台将上传内容踢到一些异步任务以返回我的 jquery 调用。并在另一个 javascript 调用中检查上传状态!
-
请在初始帖子正文中输入客户端代码。谢谢
标签: c# jquery file-upload async-await task-parallel-library