使用JAVA代码实现文件上传到阿里云服务器

文章讲述了在SpringCloudAlibaba框架下,服务器启动时如何通过ConstantPropertiesUtil加载配置文件,以及如何实现文件上传功能,强调了微服务架构中核心技能如RPC、Dubbo、SpringBoot等的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

  • 服务器启动的时候,ConstantPropertiesUtil初始化,调用里面的afterPropertiesSet方法,读取配置文件的内容

  • @throws Exception

*/

@Override

public void afterPropertiesSet() throws Exception {

ENDPOINT = endPoint;

KEYID = keyId;

KEYSECRET = keySecret;

BUCKETNAME = bucketName;

}

}

4、实现文件上传

定义具体的数据返回格式

@Data

public class R {

private Boolean success; // 响应是否成功

private Integer code; // 状态码

private String message; // 返回信息

private Map<String, Object> data = new HashMap<>(); // 返回数据,放在键值对中

private R() {

}

/**

  • 操作成功,调用这个方法

  • @return 返回成功的数据

*/

public static R ok() {

R r = new R();

r.setSuccess(true);

r.setCode(ResultCode.SUCCESS);

r.setMessage(“操作成功”);

return r;

}

/**

  • 操作失败,调用这个方法

  • @return 返回失败的数据

*/

public static R error() {

R r = new R();

r.setSuccess(false);

r.setCode(ResultCode.ERROR);

r.setMessage(“操作失败”);

return r;

}

// 使用链式编程

public R success(Boolean success) {

this.setSuccess(success);

return this;

}

public R message(String message) {

this.setMessage(message);

return this;

}

public R code(Integer code) {

this.setCode(code);

return this;

}

public R data(String key, Object value) {

this.data.put(key, value);

return this;

}

public R data(Map<String, Object> map) {

this.setData(map);

return this;

}

}

上传文件的Controller

@RestController

@RequestMapping(“/user/oss”)

@CrossOrigin // 解决跨域

public class FileUploadController {

/**

  • 上传文件

  • @return

*/

@PostMapping(“upload”)

public R uploadTeacherImg(@RequestParam(“file”) MultipartFile file) {

// 地域节点

String endpoint = ConstantPropertiesUtil.ENDPOINT;

// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。

String accessKeyId = ConstantPropertiesUtil.KEYID;

String accessKeySecret = ConstantPropertiesUtil.KEYSECRET;

// BucketName

String yourBucketName = ConstantPropertiesUtil.BUCKETNAME;

try {

// 1.获取上传文件 MultipartFile file

// @RequestParam(“file”) file 与表单输入项的name值保持一致

// 2.获取上传文件名称,获取上传文件输入流

String fileName = file.getOriginalFilename();

// 在文件名称之前添加uuid值,保证文件名称不重复

String uuid = UUID.randomUUID().toString();

fileName = uuid + fileName;

// 获取当前日期 2020/01/03

String filePath = new DateTime().toString(“yyyy/MM/dd”);

// 拼接文件完整路径 2020/01/03/parker.jpg

fileName = filePath + “/” + fileName;

// 获取上传文件输入流

InputStream in = file.getInputStream();

// 3.把上传文件存储到阿里云oss里面

// 创建OSSClient实例。

OSS ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// 上传文件流

// 第一个参数时BucketName,第二个参数是文件名称,第三个参数是输入流

最后

既已说到spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?

就个人而言,对于整个微服务架构,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。

image

如果觉得图片不够清晰,也可来找小编分享原件的xmind文档!

且除此份微服务体系大纲外,我也有整理与其每个专题核心知识点对应的最强学习笔记:

  • 出神入化——SpringCloudAlibaba.pdf

  • SpringCloud微服务架构笔记(一).pdf

  • SpringCloud微服务架构笔记(二).pdf

  • SpringCloud微服务架构笔记(三).pdf

  • SpringCloud微服务架构笔记(四).pdf

  • Dubbo框架RPC实现原理.pdf

  • Dubbo最新全面深度解读.pdf

  • Spring Boot学习教程.pdf

  • SpringBoo核心宝典.pdf

  • 第一本Docker书-完整版.pdf

  • 使用SpringCloud和Docker实战微服务.pdf

  • K8S(kubernetes)学习指南.pdf

image

另外,如果不知道从何下手开始学习呢,小编这边也有对每个微服务的核心知识点手绘了其对应的知识架构体系大纲,不过全是导出的xmind文件,全部的源文件也都在此!

image

  • Spring Boot学习教程.pdf

  • SpringBoo核心宝典.pdf

  • 第一本Docker书-完整版.pdf

  • 使用SpringCloud和Docker实战微服务.pdf

  • K8S(kubernetes)学习指南.pdf

[外链图片转存中…(img-bSOxMytz-1714576178532)]

另外,如果不知道从何下手开始学习呢,小编这边也有对每个微服务的核心知识点手绘了其对应的知识架构体系大纲,不过全是导出的xmind文件,全部的源文件也都在此!

[外链图片转存中…(img-WWxLN215-1714576178532)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值