我正在使用jQuery文件上传插件并将zip文件发布到我的控制器。但是执行顺序正在发生一些我似乎无法弄清楚的事情。当我将调试点设置在顶部时,它似乎跳到我控制器的所有位置,因此,我的代码似乎没有像我认为的那样工作。
这是我的帖子:
$('#fileupload').fileupload({
url: '/FileUpload/Import',
add: function (e, data) {
var fileSubmit = data.submit()
.success(function (result, textStatus, fileSubmit) {
var name = data.files[0].name;
fileValidation(name, textStatus);
})
.error(function (fileSubmit, textStatus, errorThrown) {
var name = data.files[0].name;
fileValidation(name, textStatus);
});
},
done: function (e, data) {
$.each(data.files, function(index, value){
if (value.name == "") {
alert("Error uploading: " + value.name + ". " + failStatus);
}
else
{
$('#fileSubmit').show();
}
});
}
});
这似乎像我想的那样开火。它将一次POST一个文件,如Fiddler所示:
asp.NET控制器似乎没有以正确的顺序执行,而是在所有地方反弹。这是我的控制器:
[HttpPost]
public ActionResult Import()
{
List<ZipContents> fileList = new List<ZipContents>();
var r = "File successfully uploaded.";
try
{
if (Session["SESSION_IMPORT_STORAGE"] != null)
{
fileList = (List<ZipContents>)Session["SESSION_IMPORT_STORAGE"];
}
Stream s = Request.Files[0].InputStream;
String fn = Request.Files[0].FileName;
fileList.Add(new ZipContents(s, fn));
Session["SESSION_IMPORT_STORAGE"] = fileList;
}
catch
{
r = "An error occurred uploading file(s).";
}
return Json(r);
}
我的意思是,如果我将调试点设置为:
List<ZipContents> fileList = new List<ZipContents>();
然后将鼠标悬停在:String fn = Request.Files[0].FileName;
上,它说:"moreXmlFiles.zip"
然后我按下F11并移动到下一行。再次进入try
。并再次点击if statement
。
如果我再次点击F11,它会一直到我原来的调试点,当我再次将鼠标悬停在String fn = Request.Files[0].FileName;
上时,它会显示下一个文件名。但我的代码甚至没有完成第一个文件...
有谁知道这里发生了什么?!任何帮助将非常感激。谢谢!