|  | @@ -2,8 +2,17 @@ package com.yonge.toolset.thirdparty.storage.provider;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.io.File;
 | 
	
		
			
				|  |  |  import java.io.IOException;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | +import com.ksyun.ks3.dto.PostObjectFormFields;
 | 
	
		
			
				|  |  | +import com.ksyun.ks3.service.Ks3;
 | 
	
		
			
				|  |  | +import com.ksyun.ks3.service.Ks3Client;
 | 
	
		
			
				|  |  | +import com.ksyun.ks3.service.Ks3ClientConfig;
 | 
	
		
			
				|  |  | +import com.yonge.toolset.thirdparty.entity.UploadSign;
 | 
	
		
			
				|  |  |  import org.apache.commons.io.FileUtils;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.apache.poi.util.IOUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.DisposableBean;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.InitializingBean;
 | 
	
	
		
			
				|  | @@ -20,141 +29,181 @@ import com.yonge.toolset.thirdparty.storage.StoragePluginContext;
 | 
	
		
			
				|  |  |  @Component
 | 
	
		
			
				|  |  |  public class AliyunOssStoragePlugin implements StoragePlugin, InitializingBean, DisposableBean {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	public final static String PLUGIN_NAME = "Aliyun";
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Value("${storage.oss.endpoint:oss-cn-beijing.aliyuncs.com}")
 | 
	
		
			
				|  |  | -	private String endpoint;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Value("${storage.oss.accessKeyId:LTAI4Fdhxwfo7FsBDZKK8Wfv}")
 | 
	
		
			
				|  |  | -	private String accessKeyId;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Value("${storage.oss.accessKeySecret:ERRma4P9VWbD98n93gspnZXmoq7rn5}")
 | 
	
		
			
				|  |  | -	private String accessKeySecret;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Value("${storage.oss.bucketName:daya-online}")
 | 
	
		
			
				|  |  | -	private String bucketName;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	private OSSClient ossClient;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	public String getName() {
 | 
	
		
			
				|  |  | -		return PLUGIN_NAME;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public void afterPropertiesSet() throws Exception {
 | 
	
		
			
				|  |  | -		// 创建ClientConfiguration。ClientConfiguration是OSSClient的配置类,可配置代理、连接超时、最大连接数等参数。
 | 
	
		
			
				|  |  | -		ClientConfiguration conf = new ClientConfiguration();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		// 设置OSSClient允许打开的最大HTTP连接数,默认为1024个。
 | 
	
		
			
				|  |  | -		conf.setMaxConnections(200);
 | 
	
		
			
				|  |  | -		// 设置Socket层传输数据的超时时间,默认为50000毫秒。
 | 
	
		
			
				|  |  | -		conf.setSocketTimeout(10000);
 | 
	
		
			
				|  |  | -		// 设置建立连接的超时时间,默认为50000毫秒。
 | 
	
		
			
				|  |  | -		conf.setConnectionTimeout(10000);
 | 
	
		
			
				|  |  | -		// 设置从连接池中获取连接的超时时间(单位:毫秒),默认不超时。
 | 
	
		
			
				|  |  | -		conf.setConnectionRequestTimeout(1000);
 | 
	
		
			
				|  |  | -		// 设置连接空闲超时时间。超时则关闭连接,默认为60000毫秒。
 | 
	
		
			
				|  |  | -		conf.setIdleConnectionTime(10000);
 | 
	
		
			
				|  |  | -		// 设置失败请求重试次数,默认为3次。
 | 
	
		
			
				|  |  | -		conf.setMaxErrorRetry(5);
 | 
	
		
			
				|  |  | -		// 设置是否支持将自定义域名作为Endpoint,默认支持。
 | 
	
		
			
				|  |  | -		conf.setSupportCname(true);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret, conf);
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		StoragePluginContext.addStoragePlugin(this);
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public String uploadFile(String folderName, File file) {
 | 
	
		
			
				|  |  | -		if (!file.exists()) {
 | 
	
		
			
				|  |  | -			throw new ThirdpartyException("需要上传的文件[{}]不存在", file.getAbsolutePath());
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		if (folderName.endsWith("/")) {
 | 
	
		
			
				|  |  | -			folderName = folderName.substring(0, folderName.length() - 1);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		ossClient.putObject(bucketName, folderName + "/" + file.getName(), file);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		return "https://" + bucketName + "." + endpoint + "/" + folderName + "/" + file.getName();
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public String asyncUploadFile(String folderName, File file, boolean delLocalFile) {
 | 
	
		
			
				|  |  | -		if (!file.exists()) {
 | 
	
		
			
				|  |  | -			throw new ThirdpartyException("需要上传的文件[{}]不存在", file.getAbsolutePath());
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		if (folderName.endsWith("/")) {
 | 
	
		
			
				|  |  | -			folderName = folderName.substring(0, folderName.length() - 1);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		final String dir = folderName;
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		Thread thread = new Thread(new Runnable() {
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			@Override
 | 
	
		
			
				|  |  | -			public void run() {
 | 
	
		
			
				|  |  | -				ossClient.putObject(bucketName, dir + "/" + file.getName(), file);
 | 
	
		
			
				|  |  | -				if(delLocalFile){
 | 
	
		
			
				|  |  | -					FileUtils.deleteQuietly(file);
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		});
 | 
	
		
			
				|  |  | -		thread.start();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		return "https://" + bucketName + "." + endpoint + "/" + folderName + "/" + file.getName();
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public byte[] getFile(String folderName, String fileName) throws IOException {
 | 
	
		
			
				|  |  | -		OSSObject ossObject = ossClient.getObject(bucketName, folderName + "/" + fileName);
 | 
	
		
			
				|  |  | -		try {
 | 
	
		
			
				|  |  | -			return IOUtils.toByteArray(ossObject.getObjectContent());
 | 
	
		
			
				|  |  | -		} finally {
 | 
	
		
			
				|  |  | -			if (ossObject != null) {
 | 
	
		
			
				|  |  | -				ossObject.close();
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public void destroy() throws Exception {
 | 
	
		
			
				|  |  | -		if (ossClient != null) {
 | 
	
		
			
				|  |  | -			ossClient.shutdown();
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	public void setEndpoint(String endpoint) {
 | 
	
		
			
				|  |  | -		this.endpoint = endpoint;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	public void setAccessKeyId(String accessKeyId) {
 | 
	
		
			
				|  |  | -		this.accessKeyId = accessKeyId;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	public void setAccessKeySecret(String accessKeySecret) {
 | 
	
		
			
				|  |  | -		this.accessKeySecret = accessKeySecret;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	public void setBucketName(String bucketName) {
 | 
	
		
			
				|  |  | -		this.bucketName = bucketName;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	public static void main(String[] args) throws Exception {
 | 
	
		
			
				|  |  | -		AliyunOssStoragePlugin aliyunOssStorageService = new AliyunOssStoragePlugin();
 | 
	
		
			
				|  |  | -		aliyunOssStorageService.setAccessKeyId("LTAIwZW9XqrfsZ4r");
 | 
	
		
			
				|  |  | -		aliyunOssStorageService.setAccessKeySecret("5uDsNZmHMxcnxav8w9byII4zcPpu5G");
 | 
	
		
			
				|  |  | -		aliyunOssStorageService.setBucketName("yooma-test");
 | 
	
		
			
				|  |  | -		aliyunOssStorageService.setEndpoint("oss-cn-beijing.aliyuncs.com");
 | 
	
		
			
				|  |  | -		aliyunOssStorageService.afterPropertiesSet();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		File file = new File("e:/var/2.jpg");
 | 
	
		
			
				|  |  | -		System.out.println(aliyunOssStorageService.uploadFile("aaa", file));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		System.err.println("***********" + aliyunOssStorageService.getFile("aaa", file.getName()).length);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		aliyunOssStorageService.destroy();
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +    public final static String PLUGIN_NAME = "Aliyun";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Value("${storage.oss.endpoint:oss-cn-beijing.aliyuncs.com}")
 | 
	
		
			
				|  |  | +    private String endpoint;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Value("${storage.oss.accessKeyId:LTAI4Fdhxwfo7FsBDZKK8Wfv}")
 | 
	
		
			
				|  |  | +    private String accessKeyId;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Value("${storage.oss.accessKeySecret:ERRma4P9VWbD98n93gspnZXmoq7rn5}")
 | 
	
		
			
				|  |  | +    private String accessKeySecret;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Value("${storage.oss.bucketName:daya-online}")
 | 
	
		
			
				|  |  | +    private String bucketName;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private OSSClient ossClient;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public String getName() {
 | 
	
		
			
				|  |  | +        return PLUGIN_NAME;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void afterPropertiesSet() throws Exception {
 | 
	
		
			
				|  |  | +        // 创建ClientConfiguration。ClientConfiguration是OSSClient的配置类,可配置代理、连接超时、最大连接数等参数。
 | 
	
		
			
				|  |  | +        ClientConfiguration conf = new ClientConfiguration();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 设置OSSClient允许打开的最大HTTP连接数,默认为1024个。
 | 
	
		
			
				|  |  | +        conf.setMaxConnections(200);
 | 
	
		
			
				|  |  | +        // 设置Socket层传输数据的超时时间,默认为50000毫秒。
 | 
	
		
			
				|  |  | +        conf.setSocketTimeout(10000);
 | 
	
		
			
				|  |  | +        // 设置建立连接的超时时间,默认为50000毫秒。
 | 
	
		
			
				|  |  | +        conf.setConnectionTimeout(10000);
 | 
	
		
			
				|  |  | +        // 设置从连接池中获取连接的超时时间(单位:毫秒),默认不超时。
 | 
	
		
			
				|  |  | +        conf.setConnectionRequestTimeout(1000);
 | 
	
		
			
				|  |  | +        // 设置连接空闲超时时间。超时则关闭连接,默认为60000毫秒。
 | 
	
		
			
				|  |  | +        conf.setIdleConnectionTime(10000);
 | 
	
		
			
				|  |  | +        // 设置失败请求重试次数,默认为3次。
 | 
	
		
			
				|  |  | +        conf.setMaxErrorRetry(5);
 | 
	
		
			
				|  |  | +        // 设置是否支持将自定义域名作为Endpoint,默认支持。
 | 
	
		
			
				|  |  | +        conf.setSupportCname(true);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret, conf);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        StoragePluginContext.addStoragePlugin(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public String uploadFile(String folderName, File file) {
 | 
	
		
			
				|  |  | +        if (!file.exists()) {
 | 
	
		
			
				|  |  | +            throw new ThirdpartyException("需要上传的文件[{}]不存在", file.getAbsolutePath());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (folderName.endsWith("/")) {
 | 
	
		
			
				|  |  | +            folderName = folderName.substring(0, folderName.length() - 1);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ossClient.putObject(bucketName, folderName + "/" + file.getName(), file);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return "https://" + bucketName + "." + endpoint + "/" + folderName + "/" + file.getName();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public String asyncUploadFile(String folderName, File file, boolean delLocalFile) {
 | 
	
		
			
				|  |  | +        if (!file.exists()) {
 | 
	
		
			
				|  |  | +            throw new ThirdpartyException("需要上传的文件[{}]不存在", file.getAbsolutePath());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (folderName.endsWith("/")) {
 | 
	
		
			
				|  |  | +            folderName = folderName.substring(0, folderName.length() - 1);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        final String dir = folderName;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Thread thread = new Thread(new Runnable() {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            @Override
 | 
	
		
			
				|  |  | +            public void run() {
 | 
	
		
			
				|  |  | +                ossClient.putObject(bucketName, dir + "/" + file.getName(), file);
 | 
	
		
			
				|  |  | +                if (delLocalFile) {
 | 
	
		
			
				|  |  | +                    FileUtils.deleteQuietly(file);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        thread.start();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return "https://" + bucketName + "." + endpoint + "/" + folderName + "/" + file.getName();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public byte[] getFile(String folderName, String fileName) throws IOException {
 | 
	
		
			
				|  |  | +        OSSObject ossObject = ossClient.getObject(bucketName, folderName + "/" + fileName);
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            return IOUtils.toByteArray(ossObject.getObjectContent());
 | 
	
		
			
				|  |  | +        } finally {
 | 
	
		
			
				|  |  | +            if (ossObject != null) {
 | 
	
		
			
				|  |  | +                ossObject.close();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public PostObjectFormFields getUploadSign(UploadSign uploadSign) {
 | 
	
		
			
				|  |  | +        //要上传的文件名称,不包含路径信息
 | 
	
		
			
				|  |  | +        String fileName = uploadSign.getFileName();
 | 
	
		
			
				|  |  | +        //可以确定值得表单项
 | 
	
		
			
				|  |  | +        Map<String, String> postData = uploadSign.getPostData();
 | 
	
		
			
				|  |  | +        //无法确定值得表单项
 | 
	
		
			
				|  |  | +        List<String> unknowValueField = uploadSign.getUnknowValueField();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Ks3ClientConfig config = new Ks3ClientConfig();
 | 
	
		
			
				|  |  | +        // 设置域名
 | 
	
		
			
				|  |  | +        config.setEndpoint(endpoint);
 | 
	
		
			
				|  |  | +        // 创建Ks3Client实例
 | 
	
		
			
				|  |  | +        Ks3 client = new Ks3Client(accessKeyId, accessKeySecret, config);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 需要用户在postData和unknowValueField中提供所有的除KSSAccessKeyId, signature, file, policy外的所有表单项。否则用生成的签名上传会返回403</br>
 | 
	
		
			
				|  |  | +         * 对于用户可以确定表单值的放在 postData中,对于用户无法确定表单值的放在unknownValueField中(比如有的上传控件会添加一些表单项,但表单项的值可能是随机的)</br>
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        //Map<String, String> postData = new HashMap<String, String>();
 | 
	
		
			
				|  |  | +        // 如果使用js sdk上传的时候设置了ACL,请提供以下一行,且值要与SDK中一致,否则删除下面一行代码
 | 
	
		
			
				|  |  | +        //postData.put("acl","public-read");
 | 
	
		
			
				|  |  | +        // 提供js sdk中的key值
 | 
	
		
			
				|  |  | +        //postData.put("key","20150115/中文/${filename}");
 | 
	
		
			
				|  |  | +        // 设置无法确定的表单值
 | 
	
		
			
				|  |  | +        //List<String> unknowValueField = new ArrayList<String>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // js sdk上传的时候会自动加上一个name的表单项,所以下面需要加上这样的代码。
 | 
	
		
			
				|  |  | +        unknowValueField.add("name");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 如果计算签名时提供的key里不包含${filename}占位符,第二个参数传一个空字符串。
 | 
	
		
			
				|  |  | +        String postDataKey = postData.get("key");
 | 
	
		
			
				|  |  | +        if (StringUtils.isNotBlank(postDataKey)) {
 | 
	
		
			
				|  |  | +            if (postDataKey.indexOf("${filename}") == -1) {
 | 
	
		
			
				|  |  | +                return client.postObject(bucketName, "", postData, unknowValueField);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return client.postObject(bucketName, fileName, postData, unknowValueField);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void destroy() throws Exception {
 | 
	
		
			
				|  |  | +        if (ossClient != null) {
 | 
	
		
			
				|  |  | +            ossClient.shutdown();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void setEndpoint(String endpoint) {
 | 
	
		
			
				|  |  | +        this.endpoint = endpoint;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void setAccessKeyId(String accessKeyId) {
 | 
	
		
			
				|  |  | +        this.accessKeyId = accessKeyId;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void setAccessKeySecret(String accessKeySecret) {
 | 
	
		
			
				|  |  | +        this.accessKeySecret = accessKeySecret;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void setBucketName(String bucketName) {
 | 
	
		
			
				|  |  | +        this.bucketName = bucketName;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public static void main(String[] args) throws Exception {
 | 
	
		
			
				|  |  | +        AliyunOssStoragePlugin aliyunOssStorageService = new AliyunOssStoragePlugin();
 | 
	
		
			
				|  |  | +        aliyunOssStorageService.setAccessKeyId("LTAIwZW9XqrfsZ4r");
 | 
	
		
			
				|  |  | +        aliyunOssStorageService.setAccessKeySecret("5uDsNZmHMxcnxav8w9byII4zcPpu5G");
 | 
	
		
			
				|  |  | +        aliyunOssStorageService.setBucketName("yooma-test");
 | 
	
		
			
				|  |  | +        aliyunOssStorageService.setEndpoint("oss-cn-beijing.aliyuncs.com");
 | 
	
		
			
				|  |  | +        aliyunOssStorageService.afterPropertiesSet();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        File file = new File("e:/var/2.jpg");
 | 
	
		
			
				|  |  | +        System.out.println(aliyunOssStorageService.uploadFile("aaa", file));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        System.err.println("***********" + aliyunOssStorageService.getFile("aaa", file.getName()).length);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        aliyunOssStorageService.destroy();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |