1.创建一个工具类OSSUtil.java,代码如下:
package com.qyrj.util;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.PutObjectRequest;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Iterator;
import java.util.UUID;
import java.util.concurrent.ConcurrentLinkedQueue;
/**
* @author YangJie
* @Description:图片上传至阿里OSS云库工具类
* @Date:Created in 10:29 2018/2/2
* @Modified By:
*/
public class OSSUtil {
private static String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
private static String accessKeyId = "XXXXXXX";//这里是你的授权KeyId
private static String accessKeySecret = "XXXXXXXXXX";//这里是你的授权秘钥
private static String bucketName = "qy-imageserver";
/**
* OSS的文件夹名
*/
private static String folder = "nmqgh/";//这里是你存放图片的文件夹名
private static String key = "http://qy-imageserver.oss-cn-shenzhen.aliyuncs.com/";
/**
* 上传图片
*
* @param fileName 文件名
* @param inputStream 流
*/
public String uploadImageToOSS(String fileName, InputStream inputStream) {
/**
* 创建OSS客户端
*/
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try {
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String[] names = fileName.split("[.]");
String name = uuid + "." + names[names.length - 1];
ossClient.putObject(new PutObjectRequest(bucketName, folder + name, inputStream));
return key + folder + name;
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
} finally {
ossClient.shutdown();
}
return null;
}
/**
* 多图上传
*/
public String[] uploadImageToOSS(String[] fileNames, InputStream[] inputStreams) {
/**
* 创建OSS客户端
*/
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try {
ConcurrentLinkedQueue concurrentLinkedQueue = new ConcurrentLinkedQueue(
Arrays.asList(fileNames));
ConcurrentLinkedQueue<InputStream> streamConcurrentLinkedQueue = new ConcurrentLinkedQueue<>(
Arrays.asList(inputStreams));
Iterator<InputStream> inputStreamss = streamConcurrentLinkedQueue.iterator();
ConcurrentLinkedQueue c = new ConcurrentLinkedQueue();
for (Iterator<String> iterator = concurrentLinkedQueue.iterator();
iterator.hasNext() && inputStreamss.hasNext(); ) {
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String[] names = iterator.next().split("[.]");
String name = uuid + "." + names[names.length - 1];
ossClient.putObject(new PutObjectRequest(bucketName, folder + name, inputStreamss.next()));
c.add(key + folder + name);
}
return (String[]) c.toArray(new String[0]);
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
} finally {
ossClient.shutdown();
}
return null;
}
/**
* 删除图片 警告:在没有调用其他方法的情况下,请调用closeClient方法
*
* @param url URL全路径
*/
public void deleteImg(String url) {
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
if (url == null || "".equals(url)) {
return;
}
String[] paths = url.split("[.]");
/**
* 文件夹是否存在
*/
if (!ossClient.doesObjectExist(bucketName, folder)) {
ossClient.putObject(bucketName, folder, new ByteArrayInputStream(new byte[0]));
}
String[] name = paths[paths.length - 2].split("[/]");
/**
* 对象是否存在
*/
if (ossClient
.doesObjectExist(bucketName,
folder + name[name.length - 1] + "." + paths[paths.length - 1])) {
/**
* 删除存在对象
*/
ossClient
.deleteObject(bucketName, folder + name[name.length - 1] + "." + paths[paths.length - 1]);
}
ossClient.shutdown();
}
}
2.所需依赖jar包,我这里用的是Maven:
<!-- oss -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.2.3</version>
</dependency>