1、注册七牛云账号并新建对象存储空间
会得到三个东西
(1)、空间名称及访问地址
Snipaste_2020-02-04_18-26-48.png
(2) 、AccessKey
(3)、SecretKey
Snipaste_2020-02-04_18-26-29.png
2、后端编写
分4个步骤
(1)依赖引入pom
<!--七牛云-->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[6.1.7, 6.999]</version>
</dependency>
(2)创建工具类
package com.stylefeng.guns.rest.modular.sunyuechao.utils;
import com.qiniu.api.auth.digest.Mac;
import com.qiniu.api.config.Config;
import com.qiniu.api.io.IoApi;
import com.qiniu.api.io.PutExtra;
import com.qiniu.api.io.PutRet;
import com.qiniu.api.rs.PutPolicy;
import java.io.InputStream;
/**
* @author: sunyuechao
* @date: 2020/2/3 0003 @time 20:13
* @Explain:
*/
public class QiniuUtil {
//访问url
private static final String BASE_URL="http://xxxxxx.xxxx.clouddn.com/";
private static final String ACCESS_KEY="b-sH7xxxxxxxxxxxxxxxxu7YtUmE";
private static final String SECRET_KEY="RbdUQwuxxxxxxxxxxxxxxxG7L5aVwBUeeYI";
private static final String Bucket_Name="sunyuechao";
public static String UploadFile (String fileName, InputStream inputStream) throws Exception {
Config.ACCESS_KEY = ACCESS_KEY;
Config.SECRET_KEY = SECRET_KEY;
Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY);
// 请确保该bucket已经存在
String bucketName = Bucket_Name;
PutPolicy putPolicy = new PutPolicy(bucketName);
String uptoken = putPolicy.token(mac);
PutExtra extra = new PutExtra();
//PutRet ret = IoApi.putFile(uptoken, fileName, filePath, extra);
//用inputStream 不用从文件直接读取
PutRet ret = IoApi.Put(uptoken, fileName, inputStream, extra);
System.out.println(ret.toString());
//做了一个返回值
return BASE_URL+fileName;
}
}
(3)引用(UserMgrController---upload)
/**
* 上传图片
*/
@RequestMapping(method = RequestMethod.POST, path = "/upload")
@ResponseBody
public String upload(@RequestPart("file") MultipartFile picture) {
String pictureName = UUID.randomUUID().toString() + "." + ToolUtil.getFileSuffix(picture.getOriginalFilename());
try {
String fileSavePath = gunsProperties.getFileUploadPath();
//上传ftp sunyuechao start
InputStream inputStream = picture.getInputStream();
//自己搭建的ftp服务器并与http服务器共享 实现类似七牛云的本地化
Boolean flag = FtpUtil.uploadFile(pictureName,inputStream);
if (flag == true) {
System.out.println("FTP上传文件成功!<<"+"http://192.168.1.109/images/"+pictureName+">>");
}else {
System.out.println("FTP上传文件失败!");
}
//调用七牛云 好像用try多余
try{
QiniuUtil.UploadFile(pictureName,inputStream);
System.out.println("七牛云上传成功");
}catch (Exception e){
System.out.println("七牛云上传失败");
}
//sunyuechao end
picture.transferTo(new File(fileSavePath + pictureName));
} catch (Exception e) {
throw new GunsException(BizExceptionEnum.UPLOAD_ERROR);
}
return pictureName;
}
(4)页面引用
html 调用
<#avatar id="avatar" name="头像" underline="true"/>
info.js 调用
$(function() {
// 初始化头像上传
var avatarUp = new $WebUpload("avatar");
avatarUp.setUploadBarId("progressBar");
avatarUp.init();
});
后端至此大功告成!
网友评论