java实现oss文件存储

1、引入maven依赖

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

2、准备好相关配置信息

#阿里云oss文件储存
oss:
  endPoint: xxxxxxxxxx.com
  accessKeyId: **********
  accessKeySecret: ***************
  bucketName: test

3、编写好utils工具类

public class AliYunOssClientUtils {

	/**
	 * 创建阿里云oss客户端连接对象
	 * @param endPoint			连接地址
	 * @param accessKeyId		连接账户
	 * @param accessKeySecret	连接密码
	 * @return
	 */
	public static OSSClient getOSSClient(String endPoint, String accessKeyId, String accessKeySecret) {

		return new OSSClient(endPoint, accessKeyId, accessKeySecret);

	}

	/**
	 * 创建储存空间
	 * @param ossClient		oss连接对象
	 * @param bucketName	需要创建的空间名
	 * @return
	 */
	public static String createBucketName(OSSClient ossClient, String bucketName) {
		// 存储空间
		final String bucketNames = bucketName;
		if (!ossClient.doesBucketExist(bucketName)) {
			Bucket bucket = ossClient.createBucket(bucketName);
			return bucket.getName();
		}
		return bucketNames;
	}

	/**
	 * 创建虚拟文件夹
	 * @param ossClient		oss连接对象
	 * @param bucketName	oss的空间名
	 * @param folder		需要创建的文件夹名称
	 * @return
	 */
	public static String createFolder(OSSClient ossClient, String bucketName, String folder) {
		final String keySuffixWithSlash = folder;
		if (!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)) {
			ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));
			OSSObject ossObject = ossClient.getObject(bucketName, keySuffixWithSlash);
			String fileDir = ossObject.getKey();
			return fileDir;
		}
		return keySuffixWithSlash;
	}

	/**
	 * 上传到oss
	 * @param ossClient			oss连接对象
	 * @param filePath			需要上传的文件路径
	 * @param bucketName		上传到oss的空间名
	 * @param parentFileName   上层目录名【评审安排/造价文件】
	 * @param parentDateTime   本次解析邮件的【年-月-日 时-分-秒】
	 * @return
	 */
	public static String uploadObjectOss(OSSClient ossClient, String filePath, String bucketName, String parentFileName, Date parentDateTime) {
		File file  = new File(filePath);
		String yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd").format(parentDateTime);
		String hhMMss = new SimpleDateFormat("HH:mm:ss").format(parentDateTime);
		String fileName = parentFileName + "/" + yyyyMMdd + "/" + hhMMss + "/" + file.getName().replace("+", "");
		try {
			System.out.println("bucketName:" + bucketName);
			System.out.println("文件存放路径:" + fileName);
			ossClient.putObject(bucketName, fileName, file);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			ossClient.shutdown();
		}
		return fileName;
	}

}
以下是java实现oss文件上传的示例代码: ``` import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.utils.IOUtils; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.oss.model.PutObjectResult; import java.io.FileInputStream; import java.io.InputStream; public class OSSUploadDemo { public static void main(String[] args) { String endpoint = "<yourEndpoint>"; String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; String bucketName = "<yourBucketName>"; String objectName = "<yourObjectName>"; String filePath = "<yourFilePath>"; // 创建OSSClient实例 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); try { // 创建上传请求 PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new FileInputStream(filePath)); // 设置上传文件的元信息 ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(putObjectRequest.getInputStream().available()); putObjectRequest.setMetadata(metadata); // 执行上传操作并返回结果 PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest); System.out.println("上传成功:" + putObjectResult.getETag()); } catch (Exception e) { System.out.println("上传失败:" + e.getMessage()); } finally { // 关闭OSSClient实例 ossClient.shutdown(); } } } ``` 其中,需要替换的变量如下: - `endpoint`:OSS服务的访问域名,例如`http://oss-cn-hangzhou.aliyuncs.com` - `accessKeyId`:访问OSS服务的AccessKeyId - `accessKeySecret`:访问OSS服务的AccessKeySecret - `bucketName`:存储文件的Bucket名称 - `objectName`:上传文件在Bucket中的Object名称 - `filePath`:要上传的文件路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值