栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java上传图片至七牛云对象存储

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java上传图片至七牛云对象存储

前言:该文章从注册七牛云到实现代码上传的步骤都有,若您只需要代码,请直接向下划

一、申请七牛云对象存储

申请七牛云对象存储不需要钱,免费使用!!!(我没打广告)
注册七牛云账号后进入 管理控制台
找到存储空间并新建存储空间

输入你的存储空间名,选择存储区域,以及控制访问.确定

二、绑定域名

这时你的存储空间就已经申请好了,它还需要一个访问域名用来访问空间中的内容,开始会送你一个月的域名使用期,等使用期过后你就要绑定域名了

点击绑定域名,后输入你的访问域名


其他选项默认即可

注意这里的加速域名的前缀是可以随便填写的,并不是必须要填写www
但后面的域名则必须是你真实拥有的域名

三、配置CNAME

域名并不是添加后就可以直接使用,还需要去配置CNAME。

这里因为我的域名是在腾讯云注册的,所以配置CNAME以腾讯云为例,当然其他地方的配置过程大差不差,您可以点击如果配置CNAME按钮进行查看七牛云的官方配置流程


打开腾讯云进入控制台,搜索 DNS解析DNSPod进入

找到你刚刚填写的域名,并点击后面的解析按钮

点击添加记录后,将你刚刚在七牛云添加的域名数据填写

如上图,记录值就是在七牛云添加域名后给的CNAME,填写好后点击保存,在你的七牛云对象存储空间就可以使用这个域名了。

四、java代码实现上传图片至七牛云对象存储

1、引入Jar包
在pom.xml中引入jar包,使用Maven,jar包版本在7.4.0~7.4.99之间的,比如:7.4.0取不到就区7.4.1依次往后

        
            com.qiniu
            qiniu-java-sdk
            [7.4.0, 7.4.99]
        

2、application.yml配置

# 七牛云 配置
qiniuyun:
  accessKey: ********                #你的accessKey
  secretKey: ********                #你的secretKey
  bucket: test-fawu                  #你的空间名
  domain: http://test.kang****.top/  #刚刚绑定的域名

accesskey和secretKey获取位置,进入密钥管理

若您没有密钥就点击创建密钥,即可获取accesskey和secretKey

3、创建上传工具类

package com.kang.commons.Util;

import java.io.InputStream;
import java.util.UUID;
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import com.qiniu.storage.Configuration;
import lombok.experimental.PackagePrivate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;



@Component
@PropertySource(value = "classpath:application.yml")
@ConfigurationProperties(prefix = "qiniuyun")
public class QiniuUtil {

    // 设置需要操作的账号的AK和SK
    @Value("${accessKey}")
    private String accessKey;
    @Value("${secretKey}")
    private String secretKey;
    // 要上传的空间
    @Value("${bucket}")
    private String bucket;
    //外链地址
    @Value("${domain}")
    private String domain;

    
    public String setUploadManager(InputStream inputStream) {
        //设置密钥、文件连接、文件名等等属性
        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.huanan());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //设置连接地址
        Auth auth = Auth.create(accessKey, secretKey);
        String prefix = "";
        int Guid = 100;
        try {
            String s = auth.uploadToken(bucket);
            //生成文件名
            String s1 = UUID.randomUUID().toString().replaceAll("-","");
            //实现文件上传
            Response response = uploadManager.put(inputStream, s1, s, null, null);
            //解析上传成功结果
            DefaultPutRet defaultPutRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            //返回文件外链地址
            return domain + defaultPutRet.key;
        } catch (QiniuException e) {
            e.printStackTrace();
            return null;
        }
    }
}

4、service层调用

package com.kang.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kang.Vo.PhotoVo;
import com.kang.commons.Util.QiniuUtil;
import com.kang.entity.Photo;
import com.kang.mapper.PhotoMapper;
import com.kang.service.PhotoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.sql.Wrapper;
import java.util.ArrayList;
import java.util.List;



@Service
public class PhotoServiceImpl implements PhotoService {

    @Autowired
    private PhotoMapper photoMapper;
    @Autowired
    private QiniuUtil qiniuUtil;

    @Override
    public String uploadPhoto(MultipartFile file) {
        //文件名
        try {
            String path = qiniuUtil.setUploadManager(file.getInputStream());
            if (path == null){
                throw new Exception("输入的字符不能为空!");
            }
            Photo photo = new Photo();
            //获取文件名
            String originalFilename = file.getOriginalFilename();
            String name = originalFilename.split("\.")[0];
            photo.setName(name);
            photo.setPath(path);
            photoMapper.insert(photo);
            return path;
        } catch (IOException e) {
            e.printStackTrace();
            return "文件上传失败";
        } catch (Exception e) {
            e.printStackTrace();
            return "文件上传失败";
        }
    }
}

上传功能已实现,其他的逻辑就靠您自己添加了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353433.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号