SpringBoot上传到OSS

/** 
   * 上传 
   * @param request 
   * @param response 
   * @return 
   */  
  @RequestMapping(value = "/upload", method = { RequestMethod.POST })  
  @ResponseBody  
  public ResultModel<List<String>> upload(HttpServletRequest request, HttpServletResponse response) {  
      ResultModel<List<String>> resultModel = new ResultModel<List<String>>();  
      try {  
  
          // 创建一个通用的多部分解析器  
          CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());  
          List<String> files = new ArrayList<>();  
          // 判断 request 是否有文件上传,即多部分请求  
          if (multipartResolver.isMultipart(request)) {  
              // 转换成多部分request  
              MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;  
              // 取得request中的所有文件名  
              Iterator<String> iter = multiRequest.getFileNames();  
              while (iter.hasNext()) {  
                  // 取得上传文件  
                  MultipartFile file = multiRequest.getFile(iter.next());  
                  if (file != null) {  
                      // 取得当前上传文件的文件名称  
                      String fileName = file.getOriginalFilename();  
                      // 如果名称不为空,说明该文件存在,否则说明该文件不存在  
                      if (fileName.trim() != "") {  
                          File newFile = new File(fileName);  
                          FileOutputStream outStream = new FileOutputStream(newFile); // 文件输出流用于将数据写入文件  
                          outStream.write(file.getBytes());  
                          outStream.close(); // 关闭文件输出流  
                          file.transferTo(newFile);  
                          // 上传到阿里云  
                          files.add(AliOSSUtil.upload(newFile));  
                          newFile.delete();  
                      }  
                  }  
              }  
          }  
  
          resultModel.setReturnValue(files);  
      } catch (ValidateException e) {  
          resultModel.setSuccessed(false);  
          resultModel.setErrorCode(e.getMessage());  
      } catch (Exception e) {  
          resultModel.setSuccessed(false);  
          resultModel.setErrorCode("system error");  
          log.error(e.getMessage());  
          e.printStackTrace();  
      }  
      return resultModel;  
  }  


Util文件

public class AliOSSUtil {  
  
    private final static Logger log               = Logger.getLogger(AliOSSUtil.class);  
    private static String       END_POINT         = "oss-cn-shanghai.aliyuncs.com";  
    private static String       ACCESS_KEY_ID     = "xxx";  
    private static String       ACCESS_KEY_SECRET = "xxx";  
    private static String       BUCKET_NAME       = "xxx-image";  
    // 文件访问域名  
    private static String       FILE_HOST         = "https://file.xxx.com/";  
  
    /** 
     * 方法描述:上传文件 
     * @param file 文件对象 
     * @return 
     */  
    public static String upload(File file) {  
        if (file == null) {  
            return null;  
        }  
        // 创建OSS客户端  
        OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);  
        try {  
            // 判断文件容器是否存在,不存在则创建  
            if (!ossClient.doesBucketExist(BUCKET_NAME)) {  
                ossClient.createBucket(BUCKET_NAME);  
                CreateBucketRequest createBucketRequest = new CreateBucketRequest(BUCKET_NAME);  
                createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);  
                ossClient.createBucket(createBucketRequest);  
            }  
            // 创建文件路径  
  
            String fileUrl = DateUtil.dateTo8String2(new Date()) + "/" + UuidUtil.getUuidByJdk(false);  
            // 上传文件  
            PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, fileUrl, file));  
            if (null != result) {  
                return FILE_HOST + fileUrl;  
            }  
        } catch (OSSException oe) {  
            log.error(oe.getMessage());  
        } catch (ClientException ce) {  
            log.error(ce.getMessage());  
        } finally {  
            // 关闭OSS服务,一定要关闭  
            ossClient.shutdown();  
        }  
        return null;  
    }  
  
    /** 
     * 方法描述:上传文件 
     * @param inputStream 文件流 
     * @return 
     * @throws FileNotFoundException 
     */  
    public static String upload(InputStream inputStream) throws FileNotFoundException {  
        if (inputStream == null) {  
            return null;  
        }  
        // 创建OSS客户端  
        OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);  
        try {  
            // 判断文件容器是否存在,不存在则创建  
            if (!ossClient.doesBucketExist(BUCKET_NAME)) {  
                ossClient.createBucket(BUCKET_NAME);  
                CreateBucketRequest createBucketRequest = new CreateBucketRequest(BUCKET_NAME);  
                createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);  
                ossClient.createBucket(createBucketRequest);  
            }  
            // 创建文件路径  
            String fileUrl = DateUtil.dateTo8String2(new Date()) + "/" + UuidUtil.getUuidByJdk(false);  
            // 上传文件  
            PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, fileUrl, inputStream));  
            if (null != result) {  
                return FILE_HOST + fileUrl;  
            }  
        } catch (OSSException oe) {  
            log.error(oe.getMessage());  
        } catch (ClientException ce) {  
            log.error(ce.getMessage());  
        } finally {  
            // 关闭OSS服务,一定要关闭  
            ossClient.shutdown();  
        }  
        return null;  
  
    }  
  
} 





最后 MAVEN 的依赖配置





   <dependency>  
        <groupId>com.aliyun.oss</groupId>  
        <artifactId>aliyun-sdk-oss</artifactId>  
        <version>2.4.0</version>  
    </dependency>  
    <dependency>  
        <groupId>commons-fileupload</groupId>  
        <artifactId>commons-fileupload</artifactId>  
        <version>1.3.1</version>  
    </dependency>  

猜你喜欢

转载自784838898.iteye.com/blog/2410243