上传图片到七牛云
示例:
/**
* 上传图片到服务器
* @param upfile 文件对象
* @return 图片链接
* @throws IOException s
*/
public String uploadFile(MultipartFile upfile) throws IOException {
InputStream inputStream = (InputStream) upfile.getInputStream();
String fileName = upfile.getOriginalFilename();//获取文件名
fileName = getFileName(fileName);
fileName = group + "/" + fileName;
// uploadQNImg() 方法代码在下方
String path = uploadQNImg(inputStream, fileName); //这个path是可以直接打开的图片链接,可以直接存储到数据库中
//System.out.println("七牛云返回的图片链接:" + path);
return path;
}
//在文件名后缀前加一个时间戳,防止图片重名
private String getFileName(String fileName) {
int index = fileName.lastIndexOf(".");
final SimpleDateFormat sDateFormate = new SimpleDateFormat("yyyymmddHHmmss"); //设置时间格式
String nowTimeStr = sDateFormate.format(new Date()); // 当前时间
fileName = fileName.substring(0, index) + "_" + nowTimeStr + fileName.substring(index);
return fileName;
}
/**
* 删除服务器图片
* @param key key为不加域名的在七牛云中的图片的名称
* 如:http://qlwdwvwug.hn-bkt.clouddn.com/33_20212604132639.jpg
* key为 33_20212604132639.jpg
*/
public void deleteFile(String key){
//deleteFile()方法在下方
deleteFile(String key);
}
上传 uploadQNImg(InputStream file, String key)
and
删除 deleteFile(String key) 具体实现方法:
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import java.io.InputStream;
/**
* 七牛云图片操作工具类, 写在服务端
*/
public class QiniuUtil {
// 设置需要操作的账号的AK和SK
private static final String ACCESS_KEY = "填充";
private static final String SECRET_KEY = "填充";
// 要上传的空间名称
private static final String BUCKETNAME = "填充";
// 密钥
private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
// 外链默认域名
private static final String DOMAIN = "http://填充";
//组名
private static String group = "可有可无";
/**
* 将图片上传到七牛云
*/
public static String uploadQNImg(InputStream file, String key) {
UploadManager uploadManager = new UploadManager(new Configuration());// 生成上传凭证,然后准备上传
try {
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
String upToken = auth.uploadToken(BUCKETNAME);
try {
Response response = uploadManager.put(file, key, upToken, null, null);
// 解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
String returnPath = DOMAIN +"/"+ putRet.key;
// 这个returnPath是获得到的外链地址,通过这个地址可以直接打开图片
return returnPath;
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
* 通过key删除七牛云上的图片
* key为不加域名的在七牛云中的图片的名称
* 如:http://qlwdwvwug.hn-bkt.clouddn.com/33_20212604132639.jpg
* key为 33_20212604132639.jpg
*/
public void deleteFile(String key){
//创建凭证
Auth auth = Auth.create(accessKey, secretKey);
BucketManager bucketManager = new BucketManager(auth, new Configuration());
try {
bucketManager.delete(bucket, key);
} catch (QiniuException ex) {
//如果遇到异常,说明删除失败
System.err.println(ex.code());
System.err.println(ex.response.toString());
}
}
}