ASP.NET MVC3 Uploadify - HTTP错误500
问题描述:
我似乎无法在ASP.NET MVC3上使用uploadify,我搜索了很多,下面的代码似乎工作正常,但不适合我。当我尝试通过html上传方法尝试上传时,它起作用,与uploadify不同。所有库都包含在内。ASP.NET MVC3 Uploadify - HTTP错误500
<!-- Not working, HTTP ERROR 500 -->
<input id="file" type="file" name="file" />
<script type="text/javascript">
$(document).ready(function() {
$('#file_upload').uploadify({
// I tried to remove "/" at the start, does not help
'uploader': '/Scripts/u/uploadify.swf',
'script': '/home/upload',
'cancelImg': '/Scripts/u/cancel.png',
'folder': '/upload',
'auto': true,
'onError': function (event, ID, fileObj, errorObj) {
alert(errorObj.type + ' Error: ' + errorObj.info);
}
});
});
</script>
<!-- Working fine -->
<form action="home/upload" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<input type="submit" />
</form>
首页控制器动作
答
没有调试代码?您没有注意到Upload
动作被击中时file
动作参数始终为空吗?你的行动的说法被称为file
,所以你需要指定使用fileDataName
选项:
'fileDataName' : 'file',
默认情况下uploadify使用Filedata
,所以如果你不想指定这个名字,你也可以调整你的行动参数名与此匹配:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase fileData)
{
var fileName = Path.GetFileName(fileData.FileName);
fileData.SaveAs(Path.Combine(Server.MapPath("~/upload/"), fileName));
return Content(fileName);
}
还要确保~/upload
文件夹存在于您的服务器上。它不会在您创建新的ASP.NET MVC应用程序时出现。
我想指出你的代码的另一个问题是,你已经绝对硬编码在你的JavaScript的所有网址。这是非常糟糕的,并且可能会导致您的应用程序在虚拟目录中部署时无法工作,例如IIS。
在ASP.NET MVC使用URL打交道时,就像你应该总是使用网址助手:
<script src="@Url.Content("~/Scripts/u/jquery.uploadify.v2.1.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/u/swfobject.js")" type="text/javascript"></script>
<input id="file_upload" type="file" name="file" />
<script type="text/javascript">
$(document).ready(function() {
$('#file_upload').uploadify({
'uploader': '@Url.Content("~/Scripts/u/uploadify.swf")',
'script': '@Url.Action("upload", "home")',
'cancelImg': '@Url.Content("~/Scripts/u/cancel.png")',
'folder': '@Url.Content("~/upload")',
'auto': true,
'onError': function (event, ID, fileObj, errorObj) {
alert(errorObj.type + ' Error: ' + errorObj.info);
}
});
});
</script>
答
是在我的控制器使用
HttpPostedFileBase file = Request.Files[0];
与Uploadify
什么异常正在抛出? – 2012-01-15 16:04:34
啊,也许是因为您用于Uploadify的输入字段的名称被称为“file_upload”。您的操作需要“文件”(这是您在html版本中使用的名称)。空引用异常可能被抛出。 – 2012-01-15 16:09:03
增加了异常和不,将其更改为“文件”,仍然发生同样的事情。 – sed 2012-01-15 16:11:04