Windows Phone PhoneGap文件上传无响应

时间:2014-05-23 17:04:12

标签: cordova windows-phone-8 phonegap-plugins

使用PhoneGap 3.4,Windows Phone 8.我使用的是标准上传代码,其中fullPath是相机以前捕获的文件的完整路径,使用navigator.device.capture.captureImage

以下是上传代码:

  var win = function (r) {
      alert("Code = " + r.responseCode);
      alert("Response = " + JSON.stringify(r.response));
      alert("Sent = " + r.bytesSent);

  };

  var fail = function (error) {
      alert("An error has occurred: Code = " + error.code);
      alert("upload error source " + error.source);
      alert("upload error target " + error.target);

  };

  var options = new FileUploadOptions();


  options.fileKey = "media";
  options.fileName = "media";

  if (source == "mediaFile"){
    options.mimeType = "image/jpeg";

  }
  else{
    options.mimeType = "image/png";

  }

  var ft = new FileTransfer();

  ft.upload(fullPath, serverUrl, win, fail, options, true); 

没有任何东西到达服务器。相同的代码在iOS和Android上完美运行。

非常感谢洞察力。

3 个答案:

答案 0 :(得分:0)

请尝试以下步骤并分享您的搜索结果以获得进一步的帮助

  • 确保您拥有正确的权限:WP8需要ID_CAP_MEDIALIB_PHOTO功能才能访问媒体库中的照片。功能在应用程序清单文件WMAppManifest.xml中指定。

  • 使用硬编码网址从您的解决方案或IsolatedStorage上传静态文件

  • 我无法预测您的fullPath的样子。你可以调试你的代码共享一个选定图像的样本网址吗?

答案 1 :(得分:0)

我不确定版本3.4,但是我可以通过从FileTransfer插件中删除第733行来获得版本3.5:

requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);

这一行导致我的WebAPI服务仅拒绝WP设备上的POSTed文件,因为边界连续两次添加到正文中。

答案 2 :(得分:0)

我发现请求中会发出额外的边界,但遗憾的是,我的请求在表单提交中失败。

FileTransfer提交最终看起来像这样。 (注意额外的边界,包括在参数之后,以及文件数据本身之前。

------------------------------2f2329h7451fc52
Content-Disposition: form-data; name="CaseId"
7e282d21-2a4a-e411-9de6-000c29906b4b

------------------------------2f2329h7451fc52
------------------------------2f2329h7451fc52
Content-Disposition: form-data; name="Files";
filename="///CapturedImagesCache/C__Data_Users_Public_Pictures_Camera Roll_WP_20141029_009_jpg.jpg" {data}

我已按照代码,删除一行来解决此问题。 对我来说,它是FileTransfer.cs的第758行

 requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);

在评论此行后,我的应用程序现在成功上传文件。

参考网址:https://issues.apache.org/jira/browse/CB-6313