当前位置: 首页 > news >正文

文件本地和OSS上传

这里写目录标题

  • 前端传出文件
  • 后端本地存储
  • 阿里云OSS存储
    • 上传Demo
    • 实现上传
    • @ConfigurationProperties

前端传出文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>上传文件</title>
</head>
<body>               
<form action="/upload" method="post" enctype="multipart/form-data">姓名: <input type="text" name="username"><br>年龄: <input type="text" name="age"><br>头像: <input type="file" name="image"><br><input type="submit" value="提交">
</form>
</body>
</html>

后端本地存储

import org.springframework.web.multipart.MultipartFile;

@PostMapping(value = "/upload")
public String upload(String username, Integer age,@RequestParam("image") MultipartFile file) throws IOException {log.info("文件上传:{},{},{}",username,age,file);String name=file.getOriginalFilename();file.transferTo(new File("D:\\images\\"+name));  //存入本地return "success";
}

阿里云OSS存储

存储步骤
在这里插入图片描述
查找 Endpoint 地址
在这里插入图片描述

上传Demo


import java.io.*;import com.aliyun.oss.*;
public class Demo {public static void main(String[] args)  {// 设置 OSS Endpoint 地址String endpoint = "https://oss-cn-beijing.aliyuncs.com";String accessKeyId = "LTAI5tHKDa7NFXnaHWrUkmNs";String accessKeySecret = "aeQsl73MlNGDZ2Q3QD7cxES7zt5YVb";String bucketName = "k92q-b";  //bucket名字//上传后的名称String objectName="狗.jpg";//上传的文件地址String filePatn="C:\\Users\\DELL\\Pictures\\头像背景\\狗.jpg";OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);InputStream inputStream= null;try {inputStream = new FileInputStream(filePatn);} catch (FileNotFoundException e) {throw new RuntimeException(e);}ossClient.putObject(bucketName, objectName, inputStream);System.out.println("2. 文件 " + objectName + " 上传成功。");}
}

实现上传


import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.UUID;/*** 阿里云 OSS 工具类*/
@Component
public class AliOSSUtils {private String endpoint = "https://oss-cn-beijing.aliyuncs.com";private String accessKeyId = "LTAI5tHKDa7NFXnaHWrUkmNs";private String accessKeySecret = "aeQsl73MlNGDZ2Q3QD7cxES7zt5YVb";private String bucketName = "k92q-b";/*** 实现上传图片到OSS*/public String upload(MultipartFile file) throws IOException {// 获取上传的文件的输入流InputStream inputStream = file.getInputStream();// 避免文件覆盖String originalFilename = file.getOriginalFilename();String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));//上传文件到 OSSOSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject(bucketName, fileName, inputStream);//文件访问路径String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;// 关闭ossClientossClient.shutdown();return url;// 把上传到oss的路径返回}
}

接口部分

@PostMapping(value = "/upload")public String upload(String username,Integer age,@RequestParam("image") MultipartFile file){String url;try {url=aliOSSUtils.upload(file);} catch (IOException e) {throw new RuntimeException(e);}System.out.println("成功");return url;}

@ConfigurationProperties

为了方便修改配置项中的属性

@Component
@Data          //lombok
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSUtils{
private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;
} 
aliyun:oss:endpoint: https://oss-cn-beijing.aliyuncs.comaccessKeyId: LTAI5tHKDa7NFXnaHWrUkmNsaccessKeySecret: aeQsl73MlNGDZ2Q3QD7cxES7zt5YVbbucketName: k92q-b
http://www.lryc.cn/news/514620.html

相关文章:

  • elementui table 表格 分页多选,保持选中状态
  • MSE+Range案例
  • C# 设计模式(结构型模式):代理模式
  • YOLO——pytorch与paddle实现YOLO
  • 持续大额亏损,销量增幅有限,北汽蓝谷依旧黯然神伤
  • C# OpenCV机器视觉:背景减除与前景分离
  • C语言return与 ? :
  • 【论文阅读】SCGC : Self-supervised contrastive graph clustering
  • python pyqt5+designer的信号槽和动态显示
  • 版本控制系统Helix Core 2024.2增强功能:与OpenTelemetry协议集成、Delta同步和传输等
  • certificate verify failed: unable to get local issuer certificate (_ssl.c:10
  • 关于大一上的总结
  • JavaScript的基础知识
  • 数据结构之单链表(超详解)
  • 告别编程困惑:GDB、冯诺依曼、操作系统速通指南
  • 网络分析工具-tcpdump
  • 基于AI边缘计算盒子的智慧零售场景智能监控解决方案
  • STM32G431收发CAN
  • 如何得到深度学习模型的参数量和计算复杂度
  • 2025年股指期货每月什么时候交割?
  • 自从学会Git,感觉打开了一扇新大门
  • Ansys Discovery 中的网格划分方法:探索模式
  • 关于 AWTK 和 Weston 在旋转屏幕时的资源消耗问题
  • grouped.get_group((‘B‘, ‘A‘))选择分组
  • HTML——66.单选框
  • Couchbase 和数据湖技术的区别、联系和相关性分析
  • springboot3 性能优化
  • C++之运算符重载详解篇
  • 深度学习应用工程化中的节能减排最佳实践
  • 电脑文件msvcp110.d丢失的解决方法