【发布时间】:2016-06-29 16:09:25
【问题描述】:
我需要使用 ASP.NET Web API 和 AJAX 上传跨域图像。我是这种方法的新手。
HTML
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<meta charset="utf-8" />
</head>
<body>
<form method="post" enctype="multipart/form-data">
<input type="file" id="fileUpload" />
<input type="submit" value="Upload CORS image" id="btnUpload" />
</form>
<div id="response"><!-- AJAX Response --></div>
<script type="text/javascript">
//55622
jQuery.support.cors = true;
function uploadFile() {
var fa = new FormData();
fa.append("upload_pass", document.getElementById("fileUpload").files[0]);
$.ajax({
type: "POST",
url: "http://localhost:5000/api/upload/imagefile",
data: fa,
contentType: false,
processData: false,
//dataType: "jsonp",
crossDomain: true,
success: function (data) {
// do something here.
}
});
}
$(document).ready(function () {
$("#btnUpload").bind("click", function () {
uploadFile();
});
});
</script>
</body>
</html>
API 控制器方法
using Microsoft.AspNet.Cors;
using Microsoft.AspNet.Mvc;
namespace WebApiz.Controllers
{
[Route("api/[controller]")]
public class UploadController : Controller
{
[EnableCors("AllowAll")]
[Route("imagefile")]
[HttpPost("imagefile")]
public string ImageFile(object data)
{
return data.ToString();
}
}
}
我有其他控制器方法可以完美地与[EnableCors("AllowAll")] 一起使用,但这个方法给了我以下错误:
HTTP 错误 405.0 - 方法不允许 您正在查找的页面无法显示,因为正在使用无效的方法(HTTP 动词)。
我完全不知道如何解决这个问题!我提到了this 和this。但老实说,我没有理解清楚。如果有人请帮助我解决我做错了什么以及我需要做些什么来完成这对我来说可以挽救生命!
提前致谢。
【问题讨论】:
标签: asp.net ajax jquery-file-upload cross-domain-policy