spring boot阿里云OSS文件上传

版权声明: https://blog.csdn.net/jiangxuexuanshuang/article/details/88702090

1、maven依赖引入

        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>2.8.3</version>
        </dependency>

2、阿里云配置类

@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "aliyun")
public class AliyunProperties {

    private String bucketName;

    private String endpoint;

    private String accessKeyId;

    private String accessKeySecret;
	
}

3、application配置

aliyun:
  bucketName: "my-bucket"
  endpoint: "https://oss-cn-shenzhen.aliyuncs.com"
  accessKeyId: "accessKeyId实际为准"
  accessKeySecret: "accessKeySecret实际为准"

4、代码使用,本地文件上传,输入流上传,字节数组上传。

1、创建连接

    @Resource
	private AliyunProperties aliyunProperties;

    private OSSClient createClient() {
		String bucketName = aliyunProperties.getBucketName();
		String endpoint = aliyunProperties.getEndpoint();
		String accessKeyId = aliyunProperties.getAccessKeyId();
		String accessKeySecret = aliyunProperties.getAccessKeySecret();

		OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
		ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);

		return ossClient;
	}

    public String upload(File file, String destFileName) throws CommonException {
		String fileName = file.getName();

		String suffix = this.getFileSuffix(fileName);
		if (StringUtils.isNotBlank(destFileName)) {
			suffix = this.getFileSuffix(destFileName);
		}
		UUID uuid = UUID.randomUUID();
		String remoteFileName = uuid.toString() + "." + suffix;

		String bucketName = aliyunProperties.getBucketName();
		// 创建OSSClient实例。
		OSSClient ossClient = this.createClient();
		try {
			// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
			ossClient.putObject(bucketName, remoteFileName,  file);

			return remoteFileName;
		} finally {
			// 关闭OSSClient。
			ossClient.shutdown();
		}
	}

	@Override
	public String upload(InputStream input, String destFileName) throws CommonException {
		String suffix = this.getFileSuffix(destFileName);
		UUID uuid = UUID.randomUUID();
		String remoteFileName = uuid.toString() + "." + suffix;

		String bucketName = aliyunProperties.getBucketName();
		// 创建OSSClient实例。
		OSSClient ossClient = this.createClient();
		try {
			// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
			ossClient.putObject(bucketName, remoteFileName,  input);

			return remoteFileName;
		} finally {
			// 关闭OSSClient。
			ossClient.shutdown();
		}
	}

	@Override
	public String upload(byte[] data, String destFileName) throws CommonException {
		String suffix = this.getFileSuffix(destFileName);
		UUID uuid = UUID.randomUUID();
		String remoteFileName = uuid.toString() + "." + suffix;

		String bucketName = aliyunProperties.getBucketName();
		// 创建OSSClient实例。
		OSSClient ossClient = this.createClient();
		try {
			// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
			ByteArrayInputStream input = new ByteArrayInputStream(data);
			ossClient.putObject(bucketName, remoteFileName, input);

			return remoteFileName;
		} finally {
			// 关闭OSSClient。
			ossClient.shutdown();
		}
	}

    private String getFileSuffix(String fileName) {
		if (fileName != null && fileName.contains(".")) {
			return fileName.substring(fileName.lastIndexOf(".") + 1);
		}
		return "";
	}

猜你喜欢

转载自blog.csdn.net/jiangxuexuanshuang/article/details/88702090