移动端拿到本地的图片,如何转换为文件流的格式呢?

那年
  • 73

使用的是apicloud UIAlbumBrowser模块获取系统相册图片 ,拿到的回调信息是这样的:


eventType: cancel, //字符串类型;按钮点击事件,取值范围 //confirm 用户点击确定按钮事件 //cancel 用户点击取消按钮事件 
list: [{ //数组类型;返回选定的资源信息数组
gifImagePath:'', //字符串类型;gif图路径,返回gif图在本地的绝对路径,可直接使用 注意:当gifImagePath存在,则不返回path和thumbPath路径 
path: '', //字符串类型;资源路径,返回资源在本地的绝对路径,注意:iOS 平台上需要用 transPath 接口转换之后才可读取原图 
thumbPath: '', //字符串类型;缩略图路径,返回资源缩略图在本地的绝对路径 
suffix: '', //字符串类型;文件后缀名,如:png、jpg、 mp4(iOS不支持) 
size: 1048576, //数字类型;资源大小,单位(Bytes)
time: '1490580032000', //字符串类型;资源修改时间,格式:时间戳,单位为毫秒。
videoPath:'', //字符串类型;视频路径 longitude:116.3718, //数字类型;资源的经度 ;注意确认一下相机的定位权限是否被开启,如果不开启的话经纬度为0,查看方式:设置-->隐私-->定位服务-->相机 (仅支持iOS) latitude:39.982', //数字类型;资源的纬度度 (仅支持iOS)
}] 

我的做法: 拿到path转换为base64 上传给服务器,但是图片太大的时候转换base64 ios会出现闪退

准备的解决方案就是转换为文件流formData 格式
请问如何转换呢

假设使用原生input ,会有问题,有的安卓机型无法多选 ,个别容易闪退。
<input type="file"  accept="image/*"  @change="upPhoto($event,6)"    ref="upimg6" name='file' multiple  />

求大佬们赐教啊 ,找个问题困扰很久了

评论
阅读 467
1 个回答

先用canvas压缩,在转blob,再通过formData上传给后台;具体方法搜下,很多可用的,都是现成的;
还有个accept建议设置下格式;避免低版本手机卡死;

宣传栏