首先这个问题的背景是这样的:我有一个上传图片的端口,但是端口对图片的限制是2M以内;现在客户有一张编辑好了的商品参数详情图,有7M大小;肯定是无法一下子传上去的。
解决的思路:
1.用ps等图形编辑工具将该图分割成多张小图,并编号,然后手动上传多次;当然也可以以上传图片列表的形式,一次上传多张
这个解决思路还是有一些不足:首先要手动切割,其次上传方式以第一种的话会很繁琐,以第二种的话,又会存在一张上传失败,整张图片就无法上传(我的打算是按顺序循环调用单张上传的接口,中间某张上传失败了,后面的就无法上传了);
其实我比较偏向于第二种方式,但是将一张大图如何切割成等份的小图,并且每张小图都小于2M这是个麻烦的问题;也就衍生了另一种解决的思路:
2.选取图片的时候,仍然选取整张大图,然后预览上传的时候,判断图片大小,根据大小去裁剪成多张小于2M的小图,根据裁剪生成的顺序依次上传...前端再依次拼接
这个解决思路有难点,其他问题还好,最最重要也是最麻烦的,同时也是我提出本次问题的核心是:如何将一张大图裁剪生成多张小图?上一张裁剪后的图,下一次如何接着上一次裁剪的地方开始裁剪?
这个问题解决了。那么这个思路就可行了,各位大佬们有没有解决这个问题的办法,或者有更好的思路?请赐教
可以试试这样:
1、图片转为base64,问题从附件上传降级为常见的json数据上传。
2、图片的base64按固定长度分割,依次入栈,格式如 ['snippet1','snippet2']。
3、多请求并发单条数据 Promise.all