前端_小白
前端_小白
  • 发布:2018-04-12 01:26
  • 更新:2018-05-15 21:28
  • 阅读:1387

图片压缩上传问题

分类:HTML5+

使用input file上传图片,然后判断当图片大于1M的时候再通过plus.zip.compress对图片进行压缩,但是每次上传的大于1M的图片都报错:图片不存在,大概知道是压缩的时候图片的路径不准确,但是不知道具体的路径是要怎么写,代码如下:
//获取图片路径
fileElem = files[0];//input file选取的图片对象
pic_size = fileElem.size;//图片大小
//获取图片路径,解决兼容性,此处url获取到的是类似:url=blob:file:///f6bdb727-3cdd-48cc-9e6
if (window.createObjectURL!=undefined) { // basic
url = window.createObjectURL(fileElem) ;
} else if (window.URL!=undefined) { // mozilla(firefox)
url = window.URL.createObjectURL(fileElem) ;
} else if (window.webkitURL!=undefined) { // webkit or chrome
url = window.webkitURL.createObjectURL(fileElem) ;
}
//使用url压缩,每次都是执行到了失败回调
plus.zip.compress(url,'',function(res){
console.log('压缩后的数据==='+JSON.stringify(res))
},function(err){
console.log('压缩失败==='+JSON.stringify(err))//执行这里:{"message":"文件不存在","code":-4}
});
有没有做过的老铁能不能分享下经验,还有plus.zip.compress第二个参数,官方说是压缩后保存的Zip文件路径,如果我不想保存压缩的文件,我是直接不填这个参数,还是说要用‘ ’这样的空字符占个位

2018-04-12 01:26 负责人:无 分享
已邀请:
9***@qq.com

9***@qq.com - PHP,PYTHON,andriod,iOS啥都搞的野生程序猿

如果后端好协调的话 感觉还是base64方便写

N丶藍

N丶藍

我用的 plus.zip.compressImage 压缩,第一个是个对象,{src:url, dest:url},第二个参数是压缩成功的回调,有个event对象

  • 前端_小白 (作者)

    你的上传的代码能给我看下不,我的老是说我的文件不存在,好像是拿到的文件路径不对,要么你把你上传之后获取到的文件路径给我看下,谢谢!!!


    2018-04-17 11:41

9***@qq.com

9***@qq.com - PHP,PYTHON,andriod,iOS啥都搞的野生程序猿

我下周才写文件上传,不然就一起研究下了=.=

  • 前端_小白 (作者)

    你文件上传开始写了吗?


    2018-04-17 11:41

N丶藍

N丶藍

回复 前端_小白:我是在外面声明的相对路径的dst,调用压缩方法后直接用相对路径取。

            var dst = "_doc/c_photo_"+ Date.now()+".jpg";  
			var options = {src:imgUrl, dst:dst, quality: 80, overwrite:true};  
			// 处理外部传入的参数  
			if (typeof isCompress === 'object') {  
				mui.extend(options,isCompress);  
			}  
			  
			this.zipImage(options, function(event){  
				console.log(JSON.stringify(event));  
			});

zipImage是封装的plus.zip.compressImage,压缩成功直接调用callback

小资电脑

小资电脑

兄弟,建议你用lrz压缩试试。 我就用的它。

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