| package com.doumee.core.oss; | 
|   | 
| import com.aliyun.oss.ClientException; | 
| import com.aliyun.oss.OSS; | 
| import com.aliyun.oss.OSSClientBuilder; | 
| import com.aliyun.oss.OSSException; | 
| import com.aliyun.oss.model.BucketInfo; | 
| import com.doumee.biz.system.SystemDictDataBiz; | 
| import com.doumee.core.utils.Constants; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import java.io.InputStream; | 
| import java.util.HashMap; | 
| import java.util.Map; | 
|   | 
| @Service | 
| public class AliOssService { | 
|   | 
|     @Autowired | 
|     private SystemDictDataBiz systemDictDataBiz; | 
|   | 
|     /** | 
|      * oss上传文件流 | 
|      * | 
|      * @param fullFileName | 
|      * @param file | 
|      * @return | 
|      */ | 
|     public Map uploadFile(String fullFileName, InputStream file) { | 
|         Map res = new HashMap(); | 
|         String endpoint = systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode(); | 
|         String accessKeyId = systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(); | 
|         String accessKeySecret = systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(); | 
|         String bucketName = systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(); | 
|         OSS ossClient = null; | 
|         try { | 
|             ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); | 
|             ossClient.putObject(bucketName, fullFileName, file); | 
|             String url = "https://" + bucketName + "." + endpoint + "/" + fullFileName; | 
|             ossClient.shutdown(); | 
|             res.put("code", "200"); | 
|             res.put("url", url); | 
|             res.put("msg", "上传成功"); | 
|         } catch (OSSException oe) { | 
|             res.put("code", "500"); | 
|             res.put("url", ""); | 
|             res.put("msg", "尝试操作OSS失败:(" + oe.getErrorCode() + "," + oe.getMessage() + "),请登录阿里云后台核实BucketName域名空间或其它信息"); | 
|         } catch (ClientException ce) { | 
|             res.put("code", "500"); | 
|             res.put("url", ""); | 
|             res.put("msg", "尝试连接OSS失败:(" + ce.getMessage() + "),请登录阿里云后台核实"); | 
|         } finally { | 
|             if (ossClient != null) { | 
|                 ossClient.shutdown(); | 
|             } | 
|         } | 
|         return res; | 
|     } | 
|   | 
|   | 
|   | 
|     /** | 
|      * 空间校验 | 
|      * | 
|      * @param endpoint | 
|      * @param accessKeyId | 
|      * @param accessKeySecret | 
|      * @param bucketName | 
|      * @return | 
|      */ | 
|     public Map vaid(String endpoint, String accessKeyId, String accessKeySecret, String bucketName) { | 
|         Map res = new HashMap(); | 
|         OSS ossClient = null; | 
|         try { | 
|             ossClient = new OSSClientBuilder().build(endpoint.trim(), accessKeyId.trim(), accessKeySecret.trim()); | 
|             BucketInfo info = ossClient.getBucketInfo(bucketName.trim()); | 
|             String location = info.getBucket().getLocation(); | 
|             if (!endpoint.trim().contains(info.getBucket().getLocation())) { | 
|                 res.put("code", "500"); | 
|                 res.put("msg", "Endpoint校验失败(检测" + bucketName + "结果为" + location + ",与您实际输入的Endpoint不符合,请前去更正)"); | 
|                 return res; | 
|             } | 
|             if (info != null) { | 
|                 res.put("code", "200"); | 
|                 res.put("msg", "OSS校验成功"); | 
|             } else { | 
|                 res.put("code", "500"); | 
|                 res.put("msg", "bucketName空间不存在,请登录阿里云后台进行创建操作"); | 
|             } | 
|         } catch (OSSException oe) { | 
|             res.put("code", "500"); | 
|             res.put("msg", "尝试操作OSS失败:(" + oe.getErrorCode() + "," + oe.getMessage() + "),请登录阿里云后台核实BucketName域名空间或其它信息"); | 
|         } catch (ClientException ce) { | 
|             res.put("code", "500"); | 
|             res.put("msg", ce.getMessage()); | 
|             res.put("msg", "尝试连接OSS失败:(" + ce.getMessage() + "),请登录阿里云后台核实"); | 
|         } finally { | 
|             if (ossClient != null) { | 
|                 ossClient.shutdown(); | 
|             } | 
|         } | 
|         return res; | 
|     } | 
| } |