1

我目前正在尝试Android App使用Phonegap ionic framework. 我的要求是将图像从画廊上传到远程服务器。为了实现这一点,我实现ASP.NET REST API了将图像上传到服务器。(假设我要上传的 URL:)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 的方法是否正确?难道我做错了什么?谢谢!!

4

1 回答 1

0

你在你的 web api 中启用了 cors吗?

Install-Package Microsoft.AspNet.WebApi.Cors

并在您的 Web 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...
}
于 2014-05-20T10:12:21.130 回答