以下是我如何调用该方法:
$.ajax({ url: "MyController/Mymethod", type: "POST", data: { file: file.files[0] } })
以下是方法:
[HttpPost]
public ActionResult Mymethod(HttpPostedFileBase file)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/images/location"), "petko.jpg");
file.SaveAs(path);
}
return RedirectToAction("Index");
}
file:file.files [0]的类型为File。该方法永远不会被调用。为什么呢?
答案 0 :(得分:2)
虽然我知道问题是为什么你的方法永远不会被调用,但你如何填充file.files?如果这是页面上类型文件的输入,则在提交表单之前不会进行上载,因此使用您的方法时,它永远不会将文件发布到您的控制器。
由于安全原因,Javascript无权访问文件系统。如果您尝试上传ajaxy文件,可能需要查看基于Flash的上传者,例如Uploadify或SWFUpload
答案 1 :(得分:0)
我首先要在你的AJAX调用上提供一个错误函数,这样你就可以了解客户端发生了什么。例如:
$.ajax({
url: "MyController/Mymethod",
type: "POST",
data: { file: file.files[0] },
error: function(jqXHR, textStatus, errorThrown) {
alert( textStatus + ": " + errorThrown );
}
success: function(data, textStatus, jqXHR) {
alert( "success: " + textStatus );
}
});
我假设您已经在控制器中设置了断点,以验证它实际上没有被调用。