使用FileTransfer.Upload将图像上载到ASP.NET REST API

时间:2014-04-17 07:31:27

标签: cordova asp.net-web-api cordova-plugins ionic-framework

我目前正在尝试使用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的方法是否正确?难道我做错了什么? 谢谢!

1 个答案:

答案 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...
}