Java上传图片到阿里云OSS

本文介绍了如何在项目中使用阿里云OSS SDK进行文件上传,包括参数验证、大文件处理和不同格式转换。重点展示了上传接口实现及异常捕获,同时涉及了图片字节流的显示技巧。

一、pom中引入阿里云sdk

 <!-- aliYun OSS -->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>

二、上传文件接口

    public Result buildPosters(MultipartFile imageFile,HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 0、上传参数不完整
        if (imageFile == null) {
            return ResultUtil.ERROR(ResultCode.UPLOAD_PARAM_ERROR);
        }
        // 1、上传图片规格是否太大
        if (imageFile.getSize() >= 5 * 1024 * 1024) {
            return ResultUtil.OTHER(ResultCode.IMG_TOO_BIG);
        }
        // 2、上传
        OSS ossClient = new OSSClientBuilder().build("endpoint","accessKeyId", "secretAccessKey");
        // 上传的文件名称
        String keyUrl = "images/"+imageFile.getName()+".jpg";
        InputStream inputStream = imageFile.getInputStream();
        ossClient.putObject("bucketName", keyUrl, inputStream);
        return ResultUtil.SUCCESS();
    }

具体捕获异常进行处理根据当前项目

三、补充上传的文件处理,将文件各种格式转换成文件流

`一、MultipartFile imageFile`
	InputStream inputStream = imageFile.getInputStream();
`二、byte[] s`
    InputStream inputStream = new ByteArrayInputStream(s);
`三、String imgStr;` 
	byte[] decode = Base64.getDecoder().decode(imgStr);
	InputStream inputStream = new ByteArrayInputStream(decode);

四、文件图片回显

// 图片字节流数组
byte[] decode = Base64.getDecoder().decode(imgStr);
// 字节数组输出流对象
ByteArrayOutputStream output=new ByteArrayOutputStream();
// 字节流数组写到对象中
output.write(decode);
// 获取Servlet输出流对象(响应)
ServletOutputStream out=response.getOutputStream();
// 写到Servlet输出流对象
output.writeTo(out);
### Java 上传文件至阿里云 OSS 示例 为了实现通过Java将文件上传阿里云对象存储服务(OSS),可以利用阿里云提供的SDK来简化操作过程。下面展示了一个简单的例子,该实例展示了如何配置并执行文件上传动作。 #### 导入依赖库 首先,在项目中引入必要的Maven依赖项以便能够调用OSS API: ```xml <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>LATEST_VERSION</version><!-- 替换成实际版本号 --> </dependency> ``` #### 初始化客户端和服务端参数设置 创建`OSSClient`实例用于连接OSS服务器,并指定Endpoint、AccessKeyId以及SecretKey等认证信息[^1]。 ```java String endpoint = "your-endpoint"; String accessKeyId = "your-access-key-id"; String secretAccessKey = "your-secret-access-key"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, secretAccessKey); ``` #### 执行文件上传逻辑 定义方法接收待上传的文件路径作为输入参数之一;构建PutObjectRequest请求体并将目标Bucket名称与远程存储位置一同传递给它;最后调用putObject()完成整个流程[^2]。 ```java public void uploadFileToOSS(String bucketName, String objectName, File localFilePath){ try { // 构建PutObjectRequest对象。 PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, localFilePath); // 如果需要在上传文件时设置Metadata。 ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("text/plain"); putObjectRequest.setMetaData(metadata); // 上传文件。 PutObjectResult result = ossClient.putObject(putObjectRequest); System.out.println("ETag: " + result.getETag()); System.out.println("RequestId: " + result.getRequestId()); } catch (Exception e) { e.printStackTrace(); } finally { if (ossClient != null) { ossClient.shutdown(); } } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值