libre
libre
  • 发布:2015-02-05 18:21
  • 更新:2015-02-10 11:57
  • 阅读:3022

无法上传手机SD卡“照相机”相册中的图片

分类:HTML5+

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  
}

如果我提供的信息不够完整,请提醒我补充。非常感谢!

2015-02-05 18:21 负责人:无 分享
已邀请:
Android_磊子

Android_磊子

尝试过其他机型可以上传成功吗?

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