Java实现七牛云上传图片、读取图片链接

Java后端实现七牛云上传图片、读取图片链接

添加依赖

        <!--七牛云sdk-->
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>7.2.11</version>
        </dependency>

controller


@Api("文件上传")
@RestController
public class UploadController {

    @Autowired
    private UploadService uploadService;

    @PostMapping(path = "/avatar",produces = "application/json")
    @ApiOperation("更换头像")
    public ResModel replaceAvator(@ApiParam("头像文件") MultipartFile file) throws IOException {
        return uploadService.replaceAvatar(file);
    }
}

service接口

public interface UploadService {
    ResModel replaceAvatar(MultipartFile file);
}

serivce实现类

@Service
public class UploadServiceImpl implements UploadService {

    //上传文件
    @Override
    public ResModel replaceAvatar(MultipartFile file) {

        try {
             /** 华北是zone1, [华东z0] [华南z2] [北美na0] [东南亚as0] */
            Configuration config = new Configuration(Zone.zone0());
            UploadManager manager = new UploadManager(config);
            String accessKey="XXX";
            String secretKey="XXX";
            String bucket="XXX";
            Auth auth = Auth.create(accessKey, secretKey);
            String token = auth.uploadToken(bucket);
            Response response = manager.put(file.getInputStream(), file.getOriginalFilename(), token, null, null);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            System.out.println(putRet.key);//文件名称
            System.out.println(putRet.hash);//空间hash值
            //根据文件名获取七牛云存储链接
            String path = getFilePath(putRet.key);
            System.out.println(path);
            return path;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    //读取文件
    public static String getFilePath(String fileName) {
         //自己的域名路径+文件名
        String publicUrl = "XXX"+ fileName;
        /**
         * 空间为私有访问,需要验证 token
          String accessKey="XXX";
          String secretKey="XXX";
          Auth auth = Auth.create(accessKey, secretKey);
          long expireInSeconds = 3600; //1小时,可以自定义链接过期时间
          String finalUrl = auth.privateDownloadUrl(publicUrl, expireInSeconds);
         */
        return publicUrl;
    }
}

前端

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   //action,修改后端接口路径
    <form action="http://localhost:8089/avatar" method="post" enctype="multipart/form-data">
        选择需要上传的文件:<input type="file" name="file">
        <input type="submit" value="提交">
    </form>
</body>
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值