Java Base64转图片上传到阿里云OSS中
【代码】Java Base64转图片上传到阿里云OSS中。
·
1.创建一个工具类 AliYunOssUtils.java
@Configuration
public class AliYunOssUtils {
/**
* 上传文件流(base64转文件流可直接用该方法)
*
* @param ico
* @return
* @throws IOException
*/
public String uploadBase64(InputStream ico) throws IOException {
String endpoint="自己注册的endpoint";
String accessKeyId="自己注册的accessKeyId";
String accessKeySecret="自己注册的accessKeySecret";
String bucketName="自己注册的bucketName";
// 生成文件名称
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
String nameSuffix = UUID.randomUUID().toString() + ".jpg";
//外面获取文件输入流,最后方便关闭
//2 创建OssClient对象
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//3 获取文件信息,为了上传
// meta设置请求头
ObjectMetadata meta = new ObjectMetadata();
meta.setContentType("image/jpg");
//4 设置知道文件夹
ossClient.putObject(bucketName, nameSuffix, ico, meta);
//5 关闭ossClient
ossClient.shutdown();
//6 返回上传之后地址,拼接地址
String uploadUrl = "https://" + bucketName + "." + endpoint + "/" + nameSuffix;
ico.close();
return uploadUrl;
}
}
2.创建controller接口(自行创建service、 serviceImpl)
@Autowired
private AliYunOssUtils aliYunOssUtils;
/**
* base64上传到OSS
*
* @param data base64图片格式
*/
@ApiOperation("base64上传到OSS")
@PostMapping
public String addWatermark(String data) throws IOException {
String result = "";
BASE64Decoder decoder = new BASE64Decoder();
try {
//转码
byte[] b = decoder.decodeBuffer(data);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {//调整异常数据
b[i] += 256;
}
}
//保存为文件流
InputStream sbs = new ByteArrayInputStream(b);
//上传oss服务器
result = aliYunOssUtils.uploadBase64(sbs);
} catch (Exception e) {
System.out.println(e);
}
return result;
}
3.测试生成服务器地址链接打开即可
更多推荐
所有评论(0)