3***@qq.com
3***@qq.com
  • 发布:2018-08-01 18:11
  • 更新:2018-08-01 18:54
  • 阅读:2718

plus.uploader.createUpload在苹果手机上出现上传图片问题

分类:MUI

使用plus.uploader.createUpload上传图片在安桌的手机上能上传成功,并且可以取得服务端响应的内容。但是,在苹果手机上,能上传图片到服务上,但是手机端取不到服务端的响应内容,responseText的内容为空,后台已经设置输出代码了。如何解决?

2018-08-01 18:11 负责人:无 分享
已邀请:
Trust

Trust - 少说废话

建议先抓包看一下请求的详细信息,并且log一下任务的状态等信息。

  • 3***@qq.com (作者)

    选择本地相册无法上传,主要是后台获取不到图片信息,但是如果用拍照方式就可以。你说的抓包是如何抓包?

    2018-08-01 18:15

  • Trust

    回复 3***@qq.com:这个“无法上传”到底是卡在哪一步了,请确认并描述清楚。抓包的话,可以用 fillder 之类的工具。网上搜下,windows 和 mac 都有相关的工具。

    2018-08-01 18:21

  • 3***@qq.com (作者)

    回复 Trust:大神,能加下你QQ吗?这里讲不太方便,我Q303153697

    2018-08-01 18:23

3***@qq.com

3***@qq.com (作者) - app

选择本地相册无法上传,后台获取不到图片信息,但是如果用拍照方式就可以

3***@qq.com

3***@qq.com (作者) - app

<script>
var mainImage = document.getElementById('head_image');
mui.init({
swipeBack: true //启用右滑关闭功能
});
/点击头像触发/
document.getElementById('head_image').addEventListener('tap', function() {
if(mui.os.plus) {
var a = [{
title: "拍照"
}, {
title: "从手机相册选择"
}];
plus.nativeUI.actionSheet({
title: "修改用户头像",
cancel: "取消",
buttons: a
}, function(b) { /actionSheet 按钮点击事件/
switch(b.index) {
case 0:
break;
case 1:
getImage(); /拍照/
break;
case 2:
galleryImg(); /打开相册/
break;
default:
break;
}
})
}
}, false);
//拍照
function getImage() {
var c = plus.camera.getCamera();
c.captureImage(function(e) {
plus.io.resolveLocalFileSystemURL(e, function(entry) {
var s = entry.toLocalURL() + "?version=" + new Date().getTime();
uploadHead(s); /上传图片/
}, function(e) {
console.log("读取拍照文件错误:" + e.message);
});
}, function(s) {
console.log("error" + s);
}, {
filename: "_doc/head.png"
})
}
//本地相册选择
function galleryImg() {
plus.gallery.pick(function(a) {
plus.io.resolveLocalFileSystemURL(a, function(entry) {
plus.io.resolveLocalFileSystemURL("_doc/", function(root) {
root.getFile("head.png", {}, function(file) {
//文件已存在
file.remove(function() {
console.log("file remove success");
entry.copyTo(root, 'head.png', function(e) {
var e = e.fullPath + "?version=" + new Date().getTime();
uploadHead(e); /上传图片/
//变更大图预览的src
//目前仅有一张图片,暂时如此处理,后续需要通过标准组件实现
},
function(e) {
console.log('copy image fail:' + e.message);
});
}, function() {
console.log("delete image fail:" + e.message);
});
}, function() {
//文件不存在
entry.copyTo(root, 'head.png', function(e) {
var path = e.fullPath + "?version=" + new Date().getTime();
uploadHead(path); /上传图片/
},
function(e) {
console.log('copy image fail:' + e.message);
});
});
}, function(e) {
console.log("get _www folder fail");
})
}, function(e) {
console.log("读取拍照文件错误:" + e.message);
});
}, function(a) {}, {
filter: "image"
})
};

    //上传头像图片   
    function uploadHead(imgPath) {  
        var url1 = baseAddress + "/m/Member/head_upload";  
        console.log(url1);  
        var task = plus.uploader.createUpload(url1, {  
                method: "POST",     
                blocksize:204800,  
                priority:100  
            },  
            function(t, status) { //上传完成  
                if(status == 200) {  
                    console.log(JSON.stringify(t)+"^^^^^^^^^^^^^^^");  
                    console.log(t.responseText+"---------------");  
                    var data = JSON.stringify(t.responseText);  
                    console.log(typeof(data));  
                    console.log(data["url"]);  
                    if(data["status"] == "666") {  
                        document.getElementById("head_image").src = baseAddress + data["url"];  
                        console.log(baseAddress + data["url"]);  
                        mui.toast("头像修改成功!");  
                    }  
                    //console.log(t.responseText);  
                    //alert("上传成功:" + t.responseText);  
                    //wt.close(); //关闭等待提示按钮  
                } else {  
                    mui.toast("上传失败!");  
                    //console.log(status);  
                    //alert("上传失败:" + status);  
                    //wt.close(); //关闭等待提示按钮  
                }  
            }  
        );  
        //添加其他参数  
        var u_id = plus.storage.getItem("u_id");  
        console.log(u_id);  
        task.addData("u_id", u_id);  
        task.addFile(imgPath, {  
            key: "image_data"  
        });  
        task.start();  

    }  
    //将图片压缩转成base64  
    function getBase64Image(img) {  
        var canvas = document.createElement("canvas");  
        var width = img.width;  
        var height = img.height;  
        canvas.width = width; /*设置新的图片的宽度*/  
        canvas.height = height; /*设置新的图片的长度*/  
        var ctx = canvas.getContext("2d");  
        ctx.drawImage(img, 0, 0, width, height); /*绘图*/  
        var dataURL = canvas.toDataURL("image/png", 1);  
        return dataURL.replace("data:image/png;base64,", "");  
    }  

    function updatehead_image(head_imageUrl) {  
        var url2 = '';  
        mui.ajax(url2, {  
            data: {  
                username: 'hgdq',  
                password: '123456',  
                headUrl: head_imageUrl  
            },  
            dataType: 'json',  
            type: 'post',  
            timeout: 10000,  
            success: function(data) {  
                if(data.status == 100) {  
                    mainImage.src = data.head_url;  
                }  
                mui.toast(data.msg);  
            },  
            error: function(xhr, type, errorThrown) {  
                //console.log(JSON.stringify(xhr));  
                mui.toast('网络异常,请稍后再试!');  
            }  
        });  
    }  
</script>
3***@qq.com

3***@qq.com (作者) - app

在 if(status == 200) {
console.log(JSON.stringify(t) "^^^^^^^^^^^^^^^");
console.log(t.responseText "---------------");
var data = JSON.stringify(t.responseText);
console.log(typeof(data));
最后一行输出不了内容
我后台是PHP,echo json_encode($_FILES),通过这个输出上传图片的信息,在安卓上没问题,苹果拍照没问题,但是在苹果手机上选择本地图片就没有任何输出

3***@qq.com

3***@qq.com (作者) - app

搞定了,上传的的文件路径加file协议就可以了

  • chinahappybeer

    file:///

    2020-03-08 14:24

  • 4***@qq.com

    你的问题是怎么解决的,我也遇到一样的问题了。

    2021-10-25 11:57

该问题目前已经被锁定, 无法添加新回复