JAVA 上传图片至阿里OSS存储库

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>


猜你喜欢

转载自blog.csdn.net/qq_36229817/article/details/79236627