离子科尔多瓦文件传输插件超时错误代码3

Posted

技术标签:

【中文标题】离子科尔多瓦文件传输插件超时错误代码3【英文标题】:ionic2 cordova File Transfer plugin time out error code 3 【发布时间】:2016-06-08 04:46:00 【问题描述】:

似乎无论我在 ios 上做什么,我的文件传输都会超时。我目前没有要测试的 android 设备,但它从昨天开始工作。我已经安装了文件传输插件和白名单。

Ionic 框架版本:2.0.0-beta.8, 离子 CLI 版本:2.0.0-beta.30, 离子应用程序库版本:2.0.0-beta.16 Xcode 版本:Xcode 7.3.1

这是我的代码:

upload = (image: string) : void =>  
  let ft = new Transfer();
  let filename = image.substr(image.lastIndexOf('/')+1)+'.jpg';
  let options = 
    fileKey: 'file',
    fileName: filename,
    mimeType: 'image/jpeg',
    chunkedMode: false,
    headers: 
        'Content-Type' : undefined
    ,
    params: 
        fileName: filename,
        apikey: "mykey"
    
  ; 
  ft.upload(image, "https://api.ocr.space/parse/image", options, false)
  .then((result: any) => 
    this.success(result);
  ).catch((error: any) => 
    this.failed(error);
  ); 

每次都会超时并给出这个结果:

[6311:2681244] -[CDVFileTransfer requestForUploadCommand:fileData:]

[Line 224] fileData length: 68706

[6311:2682532] FileTransferError 
    body = "";
    code = 3;
    "http_status" = 0;
    source = "file:///var/mobile/Containers/Data/Application/372A03D7-653A-45D8-B59A-EA34252E4AF3/tmp/cdv_photo_006.jpg";
    target = "https://api.ocr.space/parse/image";


[6311:2682532] File Transfer Error: The request timed out.

【问题讨论】:

你能在标题中设置 'Content-Type' : 'image/jpeg' 并尝试一次吗? 【参考方案1】:

对于 iOS 9 及以上版本,您需要在发布之前在 XCode 中添加 AppTransportSecurity 以允许与 HTTP 连接。 在 XCode 中,在 info.plist 中添加一些键。我遵循的步骤是:

    打开了我的 Projects info.plist 文件 添加了一个名为 NSAppTransportSecurity 的密钥作为字典。 添加了一个名为 NSAllowsArbitraryLoads 的子项作为布尔值并将其值设置为 YES。或者使用以下代码更改 info.plist:

您需要将 yourserver.com 更改为您自己的 URL 以进行文件传输

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>yourserver.com</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>

【讨论】:

【参考方案2】:

这似乎是端点的问题。这是任何人都可以查看的 woking 上传代码的副本。

upload = (image: string) : void =>  
let ft = new Transfer();
let options = new FileUploadOptions();

options.fileKey="file";
options.fileName=image.substr(image.lastIndexOf('/')+1)+'.jpg';
options.mimeType="text/plain";

let params = new Object();
params.apikey = "helloworld";
options.params = params;

//ft.onProgress(this.onProgress);
ft.upload(image, "https://apifree2.ocr.space//parse/image", options, false)
.then((result: any) => 
    this.success(result);
).catch((error: any) => 
    this.failed(error);
); 



success = (result: any) : void =>  
  console.log(result);

failed = (err: any) : void => 
  let code = err.code;
  alert("Failed to upload image. Code: " + code);

【讨论】:

以上是关于离子科尔多瓦文件传输插件超时错误代码3的主要内容,如果未能解决你的问题,请参考以下文章

科尔多瓦文件传输插件未将视频上传到服务器

如何编辑离子科尔多瓦插件

后台服务科尔多瓦离子应用程序。背景插件在 ios 8.3 上不起作用

如何使用科尔多瓦文件传输下载 base 64 图像

科尔多瓦/PhoneGap/离子:fileEntry.remove();不立即删除文件

用于普通科尔多瓦的科尔多瓦离子插件?