使用Jquery Uploadify,我无法将文件传递给控制器。
查看:
<input type="file" name="file_upload" id="file_upload" />
Jquery的:
<script type="text/javascript">
$(function () {
var uploadUrl = $('#file_upload').data();
$('#file_upload').uploadify({
'auto': true,
'script': uploadUrl,
'swf': 'Uploadify/uploadify.swf',
'uploader': '/ControllerName/Upload',
'debug': true
});
});
</script>
控制器
[HttpPost]
public string Upload(HttpPostedFileBase file)
{
//"file" = null is being passed from the view to the controller.
//code..
}
我遗失了一些东西,谢谢你的帮助。
答案 0 :(得分:2)
您可以使用:
[HttpPost]
public string Upload(HttpPostedFileBase FileData) {
}
或
[HttpPost]
public ActionResult Upload() {
if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0) {
HttpPostedFileBase postedFile = Request.Files[0];
// Do something with it
}
}
如果这些都没有工作且你的动作根本没有触发(即尝试调试并查看方法中的断点是否被命中),那么你的问题很可能是“脚本”值 - 你是否正在运行一个虚拟目录?如果是这样,您需要将目录的名称放在前面。 Uploadify使用绝对路径。
您可能还想查看swf路径swf': 'Uploadify/uploadify.swf'
。它的配置方式,它相对于当前页面。因此,如果您在localhost / Somepage上,它将寻找/Somepage/Uploadify/uploadify.swf。您可以查看浏览器的“网络”标签,确保uploadify.swf不是404
答案 1 :(得分:2)
上传默认使用fileData
,所以:
[HttpPost]
public string Upload(HttpPostedFileBase fileData)
{
...
}
但您也可以使用fileObjName
设置指定此名称:
fileObjName: 'foobar'
然后:
[HttpPost]
public string Upload(HttpPostedFileBase fooBar)
{
...
}
答案 2 :(得分:1)
不熟悉jquery Uploadify但是输入的名称是否应该与HttpPostedFileBase参数的名称匹配?如果不是那么无视。这是我唯一看到的东西。
<input type="file" name="file_upload" id="file_upload" />
[HttpPost]
public string Upload(HttpPostedFileBase file_upload)
{
...
}
更新:我看,Uploadify使用fileData作为参数。