Java使用OSS实现上传文件
2021/10/2 20:40:45
本文主要是介绍Java使用OSS实现上传文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
阿里云OSS使用
1.准备OSS
- 访问阿里云官网,注册并登录账户(支付宝方便一些,顺便冲点钱)
- 在产品分类中,找到阿里云oss
- 然后创建一个bucket
2.使用OSS(上传文件)
2.1在阿里云网站导出阿里云颁发的 id 和 秘钥
2.2导入maven坐标
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.1.0</version> </dependency>
2.3进入阿里云oss的学习路径,找到对应java操作的代码
2.3.1首先创建配置文件,将秘钥等信息进行配置
#服务端口 server.port=8002 #服务名 spring.application.name=service-oss #环境设置:dev、test、prod spring.profiles.active=dev #阿里云 OSS #不同的服务器,地址不同 aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com aliyun.oss.file.keyid=自己的keyid aliyun.oss.file.keysecret=自己的keysecret #bucket可以在控制台创建,也可以使用java代码创建 aliyun.oss.file.bucketname=自己创建的bucket名字
2.3.2创建一个工具类,将配置的属性注入到容器中
package com.gyb.eduoss.utils; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * @Author: 郜宇博 * @Date: 2021/9/30 14:54 */ @Component @ConfigurationProperties(prefix = "aliyun.oss.file") @Data public class AliyunOSSProUtil { private String endpoint; private String keyid; private String keysecret; private String bucketname; }
2.3.3编写java实现类代码(文件上传)
package com.gyb.eduoss.service.impl; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.gyb.eduoss.service.OssService; import com.gyb.eduoss.utils.AliyunOSSProUtil; import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; /** * @Author: 郜宇博 * @Date: 2021/9/30 15:53 */ @Service public class OssServiceImpl implements OssService { @Autowired AliyunOSSProUtil aliyunOSSProUtil; @Override public String uploadFileAvatar(MultipartFile multipartFile) { //从工具类获取配置文件中的oss值 String endpoint = aliyunOSSProUtil.getEndpoint(); String accessKeyId = aliyunOSSProUtil.getKeyid(); String accessKeySecret = aliyunOSSProUtil.getKeysecret(); String bucketName = aliyunOSSProUtil.getBucketname(); System.out.println("endponit:"+endpoint); // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 填写本地文件的完整路径。 // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。 InputStream inputStream; try { inputStream = multipartFile.getInputStream(); //参数一:依次填写Bucket名称 // 参数二:文件名称,或Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。 // 参数三:输入流 String currentTime = String.valueOf(System.currentTimeMillis()); String currentDate = new DateTime().toString("yyyy/MM/dd"); String originalFileName = multipartFile.getOriginalFilename(); String fileName = currentDate+"/"+currentTime+originalFileName; ossClient.putObject(bucketName,fileName, inputStream); String url = "https://"+bucketName+"."+endpoint+"/"+fileName; return url; } catch (IOException e) { e.printStackTrace(); }finally { // 关闭OSSClient。 ossClient.shutdown(); } return null; } }
2.3.4创建config类,防止传入文件为null
package com.gyb.eduoss.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.multipart.MultipartResolver; import org.springframework.web.multipart.commons.CommonsMultipartResolver; /** * @Author: 郜宇博 * @Date: 2021/10/2 00:21 */ @Configuration public class UploadConfig { @Bean(name = "multipartResolver") public MultipartResolver multipartResolver() { CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setDefaultEncoding("UTF-8"); //resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常 resolver.setResolveLazily(true); resolver.setMaxInMemorySize(40960); //上传文件大小 5M 5*1024*1024 resolver.setMaxUploadSize(5 * 1024 * 1024); return resolver; } }
3.配置Nginx反向代理(可以不配)
下载Nginx
实现将对应访问地址进行正则匹配转发
3.1将监听端口改为81(防止冲突)
3.2配置转发列表
server { listen 9001; server_name localhost; #代表带有eduservice路径的请求都走http://localhost:8001 location ~ /eduservice/ { proxy_pass http://localhost:8001; } #代表带有eduoss的请求都走http://localhost:8002 location ~ /eduoss/ { proxy_pass http://localhost:8002; } }
4.结果
此时将前端的访问接口改为9001,即可实现下图功能
从而实现功能不同的请求访问不同的服务器
这篇关于Java使用OSS实现上传文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南