Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件上传使用cordova插件文件传输不适用于Android,仅适用于iOS_Android_Cordova_Ionic2 - Fatal编程技术网

文件上传使用cordova插件文件传输不适用于Android,仅适用于iOS

文件上传使用cordova插件文件传输不适用于Android,仅适用于iOS,android,cordova,ionic2,Android,Cordova,Ionic2,有人知道可能是什么问题吗?在过去的几周里,我一直试图弄明白为什么我的代码只能在iOS上运行,而不能在Android设备上运行。任何想法都将受到高度赞赏,因为我已经没有选择了 在android设备上显示发送文件,但在服务器上我没有收到任何信息(也没有图片,也没有其他参数)。另一方面,在iOS上,一切正常,服务器也正常 我的代码: home.html: 我用两种方法检查了错误: 案例1: 我上传的代码中有2个警报: A.成功情况下的消息:警报(“图像发送:“+this.imageURL”); B错误

有人知道可能是什么问题吗?在过去的几周里,我一直试图弄明白为什么我的代码只能在iOS上运行,而不能在Android设备上运行。任何想法都将受到高度赞赏,因为我已经没有选择了

在android设备上显示发送文件,但在服务器上我没有收到任何信息(也没有图片,也没有其他参数)。另一方面,在iOS上,一切正常,服务器也正常

我的代码:

home.html:

我用两种方法检查了错误:

案例1:

我上传的代码中有2个警报: A.成功情况下的消息:警报(“图像发送:“+this.imageURL”); B错误消息:警报(“err:+JSON.stringify(err))

在我的例子中,我注意到只有第一条消息出现,即 代码执行正确

案例2:

我已通过电缆将手机连接到笔记本电脑。 要启动应用程序,我在“Node.js命令提示符”中键入了命令“ionic run” 安卓”。 我已经打开了Chrome浏览器并在地址栏中键入了内容 "chrome://inspect/#devices". 然后为我的应用选择“检查选项”,然后 弹出控制台。控制台没有显示任何错误。 这是测试它的正确方法,还是我应该尝试不同的方法

我打印了“ft.upload”成功时收到的对象“data” 功能。结果是:

data.response=
data.responseCode=200
data.bytesSent=411240
对我来说,这意味着信息被发送到服务器

还有一件事: -我运行了不同类型的测试:向两台服务器发送信息 使用HTTPS和HTTP -我尝试在另一个测试中添加trustAllHosts=true trustAllHosts=false


每次都会出现同样的问题:在iOS上工作,但在android上失败

请尝试在配置中设置
chunkedMode
false

   var options = {
   chunkedMode: false,
   fileKey: 'file',
   fileName: 'filename.jpg',
   params:{operatiune:'uploadpoza'}
试试这个:

var onUploadSuccess = function (r) {
     clearCache();
     alert(JSON.stringify(r));      
}

var onUploadFailed = function (error) {
     alert(JSON.stringify(r));
}

var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1);
options.mimeType = "image/jpeg";

var params = new Object();
params.action = "some value";//=== if u want to send some other parameters

options.params = params;
options.chunkedMode = false;

var ft = new FileTransfer();

ft.upload(imageURI, SITE_URL+"upload.php", onUploadSuccess, onUploadFailed, options);

太好了,它在工作。非常感谢你。这个设置解决了我的问题,结束了一系列的搜索和测试。你是我的英雄
chunkedMode:true,
一直在工作,但是从昨天开始图像就不工作了,但这解决了问题,必须更新应用程序。将chunkedMode设置为false对我没有帮助。我有一个正在生产的应用程序,我需要尽快修复它。显然,文件上传在我的本地开发人员机器上运行良好,因为它们是通过HTTP发布的。但是,当我通过HTTPS将生产服务器作为目标时,文件上载失败,并出现以下错误:[boringssl\u session\u write]SSL\u error\u SYSCALL:操作在库外部失败。我在XCode的调试控制台中得到了这个。有人能澄清一下吗。这是一个可怕的问题。我甚至不知道出了什么问题,挣扎了几个小时。
   var options = {
   chunkedMode: false,
   fileKey: 'file',
   fileName: 'filename.jpg',
   params:{operatiune:'uploadpoza'}
var onUploadSuccess = function (r) {
     clearCache();
     alert(JSON.stringify(r));      
}

var onUploadFailed = function (error) {
     alert(JSON.stringify(r));
}

var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1);
options.mimeType = "image/jpeg";

var params = new Object();
params.action = "some value";//=== if u want to send some other parameters

options.params = params;
options.chunkedMode = false;

var ft = new FileTransfer();

ft.upload(imageURI, SITE_URL+"upload.php", onUploadSuccess, onUploadFailed, options);