我也遇到了同样的问题,原来本例是在ios手机上测试的,没有问题。一段时间不用,突然发现ios上用不了了,但是在android上测试没有问题。附件为完整demo
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>upload to qiniu test case</title>
</head>
<body>
<button id='file_upload_test'>上传文件</button>
<script type="text/javascript" src="js/mui.min.js" ></script>
<script type="text/javascript">
document.addEventListener('plusready', function(){
//console.log("所有plus api都应该在此事件发生后调用,否则会出现plus is undefined。"
document.getElementById('file_upload_test').addEventListener('tap', function(){
galleryImg();
});
});
// 从相册中选择图片
function galleryImg() {
// 从相册中选择图片
plus.gallery.pick( function(path){
upload(path);
}, function (e) {
console.log("取消选择图片");
}, {filter:"image"} );
}
// 监听上传任务状态
function onStateChanged(upload, status) {
console.log(upload.state, status);
if (upload.state == 4 && status == 200 ) {
// 上传完成
alert( "Upload success: " + upload.getFileName() );
}
}
//上传图片
function upload(path){
let task;
task = plus.uploader.createUpload("http://up-z1.qiniu.com/", {
"method": "POST"
}, function(t, status) {
console.log(JSON.stringify(t));
console.log(status);
if (status == 200) {
console.log("上传成功!");
mui.toast("上传成功!");
} else {
console.log("上传失败:" + status);
mui.toast("上传失败:" + status);
}
}
);
task.addEventListener('statechanged', onStateChanged, false);
var uid = Math.floor(Math.random() * 100000000 + 10000000).toString();
var scope = "yhsns";//上传目标空间名称
var keyPath = "uploads/images/hbuilder/" + uid + path.substring(path.lastIndexOf("."), path.length);
var fileName = uid + path.substring(path.lastIndexOf("."), path.length);
console.log(fileName);
mui.ajax({
url: "http://api.irematch.com/api/Qiniu/GetUptoken",
type: "get",
data: {bucket: scope},
success: function(data){
var token = data.uptoken;
console.log("token "+ token);
task.addData("name", fileName);
task.addData("key", keyPath);
task.addData("scope", scope);
task.addData("token", token);
task.addFile(path, {
"key":"file",
"name": fileName
});
console.log('start');
console.log(JSON.stringify(task));
task.start();
console.log('end');
},
error: function(xhr){
console.log("error "+ xhr.responseText);
}
});
}
</script>
</body>
</html>
10 个回复
DCloud_App_Array
这应该是ATS问题导致的(开启了ATS后连网需要使用符合苹果要求的https),请使用Alpha版本(http://update.dcloud.net.cn/alpha/index.html)。
或者提交云端打包,云端打包已经默认关闭了ATS。
l***@163.com
请问您的问题解决了吗?我现在遇到同样的问题,ats关闭也不行。
Trust - 少说废话
请贴出详细的下载任务的代码。
w***@163.com (作者)
谢谢现在已经解决了
2016-09-27 09:38
4***@qq.com
回复 w***@163.com:你好,是怎么解决的呀
2016-12-19 12:49
春华秋实
这个问题更诡异的在于 原来hb打包手机调试存在这个问题,但是本地打包后又回复正常了
2017-01-23 12:56
春华秋实
hb打包还是不行
2017-01-23 12:56
s***@qq.com
回复 w***@163.com:请问是怎么解决的
2017-07-27 14:19
c***@163.com
请问问题解决了么
遇到一模一样的问题,
用uploader上传到oss,
也是安卓可以上传
换成ios oss那边连请求都没收到
y***@gmail.com
IOS上传,用https 试试。
董道刚
的确是这个原因。比如七牛存储,之前是http://upload.qiniu.com/ 现在要换成:https://up.qbox.me/
2017-01-23 02:25
春华秋实
我也遇到了同样的问题,原来本例是在ios手机上测试的,没有问题。一段时间不用,突然发现ios上用不了了,但是在android上测试没有问题。附件为完整demo
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>upload to qiniu test case</title>
</head>
<body>
<button id='file_upload_test'>上传文件</button>
<script type="text/javascript" src="js/mui.min.js" ></script>
<script type="text/javascript">
document.addEventListener('plusready', function(){
//console.log("所有plus api都应该在此事件发生后调用,否则会出现plus is undefined。"
document.getElementById('file_upload_test').addEventListener('tap', function(){
galleryImg();
});
});
</body>
</html>
4***@qq.com - 天天
问题同上
Wiggins001
这个问题怎么解决呢?发现在IOS11.4 上面在后台调试没有数据,但是下载官方的demo 程序又可以,请icloud的工作人员给处理下!!!
0o鬼瞳o0
碰上同样的问题,安卓一切正常,过去IOS通过图片路径是能够上传的,一段时间后发现不能上传了,获得的图片地址只能用于本地展示。目前IOS版本是11.3 请官网及时修复这个问题。
请各位已经解决的大神朋友分享下解决方法,谢谢
DCloud_IOS_XTY
请确保上传地址已经编码
2018-11-02 11:50
0o鬼瞳o0
已经解决,谢谢
2018-11-02 18:52
0o鬼瞳o0
问题已经发现,特意发出来与大家共享下我的问题出在域名自身,首先我有两台服务器一台服务器用的七牛云的PHPSDK,我的图片就是通过这台服务器来提交到七牛云的,经过发现域名https已经过期,只能用http协议,安卓对于域名没有任何影响,但是IOS是不能的,后来从新认证了下域名,完美解决。请各位碰上此类问题的码友首先检查自己的域名是否证书已经过期。