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.测试生成服务器地址链接打开即可

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐