开源一夏 | 腾讯云对象存储 cos 获取图片像素信息
上传时增加参数记录图片像素信息
项目中是通过流类型上传文件到腾讯云 cos 的,上传图片信息默认是没有像素信息,想获取图片像素信息的话首先想到的是通过增加上传自定义参数信息定义图片像素参数上传,文档地址: https://cloud.tencent.com/document/product/436/65935#.E4.B8.8A.E4.BC.A0.E6.B5.81.E7.B1.BB.E5.9E.8B2
根据文档可以通过 usermetadata 参数增加自定义参数信息,
代码补充对应参数之后上传图片文件报错:com.qcloud.cos.exception.CosClientException: Data read has a different length than the expected: dataLength=0; expectedLength=635065; includeSkipped=false; in.getClass()=class com.qcloud.cos.internal.ReleasableInputStream; markedSupported=false; marked=0; resetSinceLastMarked=false; markCount=0; resetCount=0,最后测试得出的结果就是设置了 content-length 就不能设置 usermetadata,不设置 content-length 的话虽然可以设置 usermetadata,但是文件的大小却不是正常大小,而是 0;
询问腾讯云 cos 技术支持得知
那么问题来了,不指定 objectmetadata 就无法指定 usermetadata 信息,指定 objectmetadata 就必须指定 content-length,同时指定 content-length 和 usermetadata 又会报错无法上传。此路行不通暂时
展示时获取图片像素信息
询问腾讯云 cos 技术知识得知有一篇 api 文档可以获取到图片的像素信息 https://cloud.tencent.com/document/product/460/6927 ,这样的话就在获取腾讯云文件列表信息的判断是否是图片资源进行获取图片像素信息的操作
此方案行得通,且页面加载也基本不受影响,故采用次方案
版权声明: 本文为 InfoQ 作者【六月的雨在infoQ】的原创文章。
原文链接:【http://xie.infoq.cn/article/ed0df536b2204e0ff0a6ae71c】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论