所以我试图用Asp.NET MVC实现Uploadifive 1.0。使用调试器模式,我知道上传操作已成功传递给Controller,并且也传递了服务器变量。但是,HttpPostedFileBase变量fileData始终为null。我在谷歌上看到了无处可寻,无法找到答案。我发现变量必须被称为fileData。但这并没有帮助。
以下是视图的一部分:
<form action="<%: Url.Action("SaveFiles", "File") %>" enctype="multipart/form-data">
<input type="file" name="file_upload" id="file_upload" />
</form>
<script type="text/javascript">
(function ($) {
$(document).ready(function () {
$('#file_upload').uploadifive({
'method': 'post',
'uploadScript': 'SaveFiles',
'formData': {'path' : 'documents'}
});
});
})(jQuery);
</script>
这是控制器动作:
[HttpPost]
public ActionResult SaveFiles(HttpPostedFileBase fileData)
{
string uploadFolder = Request.ServerVariables.Get("HTTP_X_PATH");
if(string.IsNullOrWhiteSpace(uploadFolder))
return Json(JsonMessageManager.GetFailureMessage("No upload folder was selected"));
if (fileData != null && fileData.ContentLength > 0)
{
var fileName = Path.GetFileName(fileData.FileName);
var path = Path.Combine(Server.MapPath("~/Content/" + uploadFolder), fileName);
fileData.SaveAs(path);
return Json(true);
}
return Json(false);
}
任何指针或帮助将不胜感激。我感到迷茫。
答案 0 :(得分:1)
我和Uploadifive有完全相同的问题所以我在现有线程(可能是你的)上发布了Uploadify论坛。作者已经发布了我下载的Uploadifive插件的更新,现在这对我来说很好。实际上,它的工作方式与上传用于包含“Request.Forms”中可用的其他表单数据完全相同,并且不再将“X_”添加到其他表单数据中。我建议你试试新版本,看看你怎么做。
请参阅此处的讨论:http://www.uploadify.com/forum/#/discussion/8223/no-files-attached-to-request
答案 1 :(得分:0)
密钥不是命名变量'fileData',而是确保您的控制器和UploadiFive都认为它具有相同的名称。例如:
使用Javascript:
$(document).ready(function () {
$('#fileUploadDiv').uploadifive({
'uploadScript': '/File/Upload',
'fileObjName' : 'file'
});
});
C#Controller:
[HttpPost]
public PartialViewResult Upload(HttpPostedFileBase file)
{
var name = file.FileName;
var stream = file.InputStream;
// etc...
}
只要fileObjName
与C#控制器中的参数同名,就应该没问题。我用各种名称对它进行了测试,如果名称不匹配,则参数为null,当它们匹配时,它就像魅力一样。
如果参数仍不起作用,您应该能够使用控制器内部的this.Request.Files
访问数据。无论参数名称如何,看起来都是数据。