离子科尔多瓦文件传输插件超时错误代码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 上不起作用