我目前正在尝试使用Android App
实施Phonegap ionic framework
。我的要求是将图像从库上传到远程服务器。为实现此目的,我实施了ASP.NET
REST API
将图片上传到服务器。 (假设我上传的网址为http://XXXX.net/api/Upload
)。在我的REST API中,我实现了UploadController:WebController
。我有一个Post()方法,如下所示。
服务器代码:
public string Post()
{
HttpPostedFile MyFile = HttpContext.Current.Request.Files["recFile"];
if (MyFile == null)
return null;
return Utils.UploadToServer(file);
}
我的Android代码如下所示:
$scope.UploadPictureEx = function()
{
var options = new FileUploadOptions();
options.fileKey="recFile";
options.fileName=$scope.emplyeedata.ImageURI.substr($scope.emplyeedata.ImageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
var params = new Object();
params.value1 = "test";
params.value2 = "param";
options.params = params;
options.chunkedMode = false;
options.httpMethod = "POST";
options.headers = {
Connection: "close"
};
var ft = new FileTransfer();
ft.upload($scope.emplyeedata.ImageURI, "http://XXXX.net/api/Upload/", win, fail, options);
}
多数民众赞成。当我执行时,我总是收到错误Error code = 3
。任何人都可以告诉我如何完成这项工作?
我实现Web API的方法是否正确?难道我做错了什么?
谢谢!
答案 0 :(得分:0)
您是否在网络API中启用了cors
Install-Package Microsoft.AspNet.WebApi.Cors
并在您的网络API配置中:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// New code
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
并且在您的控制器中,您可以精细控制您要启用的内容:
[EnableCors(origins: "http://mywebclient.azurewebsites.net", headers: "*", methods: "*")]
public class TestController : ApiController
{
// Controller methods not shown...
}