【问题标题】:PhoneGap File Upload to WCFPhoneGap 文件上传到 WCF
【发布时间】:2012-07-13 01:45:46
【问题描述】:

如何将图像从移动设备上传到我的外部数据库?

这是我当前的 WCF 服务:

界面:

[WebInvoke(UriTemplate = "/Upload", Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped), CorsEnabled]
string UploadProfileImage(string image);

类方法:

public string UploadProfileImage(string image)    
{ 
    // Upload code needs to go here. 
}

我可以很好地使用 ajax 发布,我只是不知道如何使用图像来发布。

这是我如何发布帖子的 jQuery 示例。

// This is the success function that gets called after selecting an image from my device
function uploadSuccess(imageURI) {
    uploadImage(imageURI);
}

function uploadImage(imageURI)
{
    var data = '{"image":"' + imageURI + '"}'
    $.ajax({
        url: "http://192.168.101.55:8848/api/Upload",
        type: "POST",
        contentType: "application/json",
        data: data,
        success: function (result) {

        },
        error: function (jqXHR, textStatus, errorThrown) {

        }
    });
}

【问题讨论】:

  • 您是否正在尝试将图像从客户端上传到您的 REST 服务?如果是这种情况,您的服务方法的参数应该是流类型而不是字符串。
  • 是的,谢谢。我只是想通了。我最大的问题是我在 LogCat 调试控制台中收到一个错误,上面写着“错误错误请求”。如果我能弄清楚错误是什么,我可能会走得更远。
  • 错误请求可能是由于您的客户端发送字节数组,而服务方法需要一个字符串。只需将服务方法参数类型更改为流,希望它可以正常工作。确保设置 readerQuotas 以上传大文件
  • 我收到了同样的错误信息。错误的请求。
  • 尝试使用 Fiddler 检查您的请求,了解原始请求的外观。错误的请求也可能是由于文件的大小。尝试使用一个非常小的文件先让它工作,然后你可以添加 readerQuotas 来上传大文件。在您的服务上启用跟踪 (msdn.microsoft.com/en-us/library/ms733025.aspx) 以获得错误请求错误的确切原因。

标签: wcf file-upload cordova


【解决方案1】:

我认为由于跨域发布限制,您无法使用 jquery 实现此目的。
您必须创建表单并将表单“操作”指向服务方法的 url,添加 enctype="multipart/form-data " 到表单标签。
不要忘记将服务输入参数类型更改为“流”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 2012-01-16
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    相关资源
    最近更新 更多