spring-mvc文件云存储功能

1. 注册七牛云,创建自己的云空间

2.在七牛云上复制自己需要的参数

请添加图片描述
请添加图片描述
请添加图片描述

3 . 使用spring-boot快速搭建开发框架,创建一个spring-boot项目

4 . 在项目中pom文件中添加七牛云的依赖

   <!--七牛服务器-->
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>7.2.28</version>
        </dependency>
        <!--Gson包-->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>

5 . 创建一个接口用来配置七牛云的秘钥参数

public interface QiNiuSA {
    //    七牛AK
    public static final String ACCESSKEY = "S1x-FTuiDmPCjSLc5m4Sj_vI54DMEH0c-UlnRYsw";
    //    七牛SK
    public static final String SECRETKEY = "83rkx7JiVJhtKSoMsi4NWFLzKEagYb2p4OoGYSyI";
    //    七牛存储空间名
    public static final String BUCKET = "gw-j2005";
    //    七牛默认域名
    public static final String DOMAIN = "http:/qij47bjgg.hn-bkt.clouddn.com";
}

6 . 创建一个工具类,实现文件上传的功能

此处主要注意包是否导入正确;我们使用的是七牛云的包

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Random;
import java.util.UUID;

/*上传*/
public class QiNiuUpload {
    //1 .设置好账号的ACCESS_KEY和SECRET_KEY//从七牛云的官网登录后可以获得
    //ak,sk用来登录七牛云
    private static String ACCESS_KEY = QiNiuSA.ACCESSKEY; 
    private static String SECRET_KEY = QiNiuSA.SECRETKEY;

    //2. 要上传的空间//对应要上传到七牛上,自己创建的那个空间(注意设置公开)
    private static String bucketname = QiNiuSA.BUCKET;

    //3. 获得上传的凭证
    private static Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
    private static Configuration cfg = new Configuration(Region.huanan());

    //4. 根据上传凭证获得上传对象,我们通过上传对象来上传文件
    private static UploadManager uploadManager = new UploadManager(cfg);

    //5. 上传的方法  
    // 传入需要上传的文件,返回一个字符串的路径,表示当前文件在七牛云的存放位置
    public static String uploadFile(MultipartFile file) {
        try {
            // 5.1 获取上传文件的原始名字
            String orderFilename = file.getOriginalFilename();
            // 5.2 截取末尾的文件格式,组成新名字
            String fileName = UUID.randomUUID().toString() +
                    orderFilename.substring(orderFilename.lastIndexOf("."));
            //5.3 上传的文件字节数组,字节流上传
            byte[] bytes = file.getBytes();
            
            String token = auth.uploadToken(bucketname);

			//5.4 开始上传
            Response response = uploadManager.put(bytes, fileName, token);
            // 5.5 获得七牛云返回的gosn数据并解析成字符串
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            System.out.println(putRet.key);
            System.out.println(putRet.toString());
			//5.6 重新组织文件的存储路径并返回
            return QiNiuSA.DOMAIN + "/" + fileName;
        } catch (QiniuException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

7 . controller接收文件

以上工作准备好以后,我们只需要获得一个文件,而后端一般是通过controller来与前端交互.
因此我们需要创建一个数据接口用来接收数据并返回;

@RestController
public class UpLoad{
	//上传文件的接口
	@RequestMapping(value = "/upload", method = RequestMethod.POST)
	public String upload(MultipartFile file) {
	    //调用刚写好的工具类  , 将文件传至七牛云上,返回完整的url地址
	    String filePath = QiNiuUpload.uploadFile(file);
	    return filePath;
	}

}

在获得文件的存放地址以后,将这个字符串存放到我们的数据库中,实现文件上传

8. 前端发送文件到后端

前端发送文件的方式有很多种,看这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值