HBuilder 5.2.6.201502022444
设备:三星 Galaxy Note3,型号:SM-N9002
Android 版本:4.4.2
上传图片的步骤是这样的:
1.打开手机相册
2.选中某个相册某张照片
3.在App上预览这张照片
4.提交上传到服务器端
5.服务器接口获取POST过来的$_FILES来上传文件。
问题出在4-5步。
第三步,App上预览这张照片 无论是手机SD卡中的照片还是手机内存中的照片都可以正常显示。
第四、五步,当上传的是手机内存中的照片就可以成功获取图片并上传到服务器上,
但如果选择的是手机SD中的照片,就无法获取到图片信息更无法保存到服务器上。
以下是几个步骤的部分代码片段。
//选中图片
plus.gallery.pick(function(p) {
addImg(p);
});
//App预览
function addImg(p) {
imgData += "," + p;
$(".add_img").before("<div class=\"img_box\" data-pic=\"" + p + "\"><img src=\"" + p + "\" class=\"img_hid\" /></div>");
}
//获取图片地址
for( var i = 0 ; i < $('.img_box').length ; i ){
PhotoImageSrc.push( ImgObj.data('pic') );
}
for( var i = 0 ; i < PhotoImageSrc.length ; i ){
files.push({
name : "uploadImg" i,
path : oPhoto[i]
});
}
//提交到服务器
var task = plus.uploader.createUpload(_opt.url, {
method: "POST"
}
$.each(_opt.data, function(k,v) {
task.addData(k, v);
});
for (var i = 0; i < files.length; i ) {
var f = files[i];
task.addFile(f.path, {
key: f.name
});
}
task.start();
上传成功图片的debug信息:
//手机端 debug(手机内存"DownLoad"文件夹的照片)
console.log(JSON.stringify(files));
{
"name": "uploadImg0",
"path": "file:///storage/emulated/0/TencentNews/DownLoad/fbd2bb037ef55c0fa7af5e2c5384ce2c.jpg"
}
//服务器PHP接口获取的图片信息(手机内存"DownLoad"文件夹的照片)
{
"name": "fbd2bb037ef55c0fa7af5e2c5384ce2c.jpg",
"type": "image/jpeg",
"tmp_name": "/tmp/phpM8wZ5h",
"error": 0,
"size": 10102
}
上传失败图片的debug信息:
//手机端 debug(SD卡"照相机"相册的照片)
console.log(JSON.stringify(files));
{
"name": "uploadImg0",
"path": "file:///storage/extSdCard/DCIM/Camera/20141224_120845.jpg"
}
//服务器PHP接口获取的图片信息(SD卡"照相机"相册的照片)
{
"name": "20141224_120845.jpg",
"type": "",
"tmp_name": "",
"error": 1,
"size": 0
}
如果我提供的信息不够完整,请提醒我补充。非常感谢!
1 个回复
Android_磊子
尝试过其他机型可以上传成功吗?