@PostMapping
public Result insertEmp(@RequestBody Emp emp){
empService.insertEmp(emp);
return Result.success();
}
void insertEmp(Emp emp);
@Override
public void insertEmp(Emp emp) {
empMapper.insertEmp(emp);
}
@Insert("insert emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)" +
" values(#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},now(),now())")
void insertEmp(Emp emp);
通过mutipart/form-data类型传送的file到请求头
@Slf4j
@RestController
public class UploadController {
@PostMapping("/upload")
public Result upload(String username, String age, MultipartFile image) throws IOException {
return Result.success();
}
@PostMapping("/upload")
public Result upload(String username, String age, MultipartFile image) throws IOException {
//获取原始文件名
String imagePath = image.getOriginalFilename();
//构建唯一名称文件名
int lastIndex = imagePath.lastIndexOf(".");
String newPath = UUID.randomUUID().toString() + imagePath.substring(lastIndex);
//存储到服务器的磁盘目录上
image.transferTo(new File("E:\\TestPhoto\\projectImage\\"+newPath));
return Result.success();
}
在springBoot中,文件上传,默认单个文件允许最大大小为1M,如果需要上传大文件,可以在配置文件中配置
#配置单个文件最大上传大小
logging.logback.rollingpolicy.max-file-size=10MB
#配置单个请求最大上传大小(一次请求可以上传多个文件)
spring.servlet.multipart.max-request-size=100MB
概述
OSS
登录
开通OSS
开通服务后,在OSS产品详情页面单击管理控制台直接进入OSS管理控制台界面。可以单击位于官网首页右上方菜单栏的控制台,进入阿里云管理控制台首页,然后单击左侧的对象存储OSS菜单进入OSS管理控制台界面
【AliOSSUtils】
@Component
public class AliOSSUtils {
private String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
private String accessKeyId = "LTAI5tNm2NDzDbJK698NqUT4";
private String accessKeySecret = "n5RN4vhzrMFncDA3crAdTzF2KVo3gm";
private String bucketName = "web-demo-quickstart";
/**
* 实现上传图片到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("."));
//上传文件到 OSS
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, fileName, inputStream);
//文件访问路径
String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
// 关闭ossClient
ossClient.shutdown();
return url;// 把上传到oss的路径返回
}
}
【UploadController】
@PostMapping("/upload")
public Result upload(MultipartFile image) throws IOException {
String upload = ossUtils.upload(image);
return Result.success(upload);
}
@GetMapping("/{id}")
public Result getEmpById(@PathVariable Integer id){
Emp emp = empService.getEmpById(id);
return Result.success(emp);
}
Emp getEmpById(Integer id);
@Override
public Emp getEmpById(Integer id) {
return empMapper.getEmpById(id);
}
@Select("select * from emp where id = #{id}")
Emp getEmpById(Integer id);
@PutMapping
public Result updateEmpById(@RequestBody Emp emp){
empService.updateEmpById(emp);
return Result.success();
}
void updateEmpById(Emp emp);
@Override
public void updateEmpById(Emp emp) {
empMapper.updateEmpById(emp);
}
void updateEmpById(Emp emp);
问题解决
#阿里云OSS配置
aliyun.oss.endpoint=https://oss-cn-hangzhou.aliyuncs.com
aliyun.oss.accessKeyId=LTAI5tNm2NDzDbJK698NqUT4
aliyun.oss.accessKeySecret=n5RN4vhzrMFncDA3crAdTzF2KVo3gm
aliyun.oss.bucketName=web-demo-quickstart
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
@Value 注解通常用于外部配置的属性注入,具体用法为:
通过@Value注解注入属性
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
@Value("${aliyun.oss.bucketName}")
private String bucketName;
springBoot提供了多种属性配置方式
<server>
<port>8080</port>
<address>127.0.0.1</address>
</server>
server.port=8080
server.addresss=127.0.0.1
server:
port: 8080
address: 127.0.0.1
yml/ymal
yml/yaml数据可个
#定义对象/Map集合
user:
name: Tom
age: 20
address: beijing
#定义数组/List/Set
hobby:
- java
- C
- game
- sport
在application.xml中的配置转移到application.yml中
#驱动类名称
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/webdemo
username: root
password: root
#配置单个请求最大上传大小
servlet:
multipart:
max-file-size: 10MB
#配置单个文件最大上传大小
max-request-size: 100MB
#配置mybatis日志,指定输出控制台
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#开启mybatis驼峰命名自动映射开关
map-underscore-to-camel-case: true
#阿里云OSS配置
aliyun:
oss:
endpoint: https://oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI5tNm2NDzDbJK698NqUT4
accessKeySecret: n5RN4vhzrMFncDA3crAdTzF2KVo3gm
bucketName: web-demo-quickstart
创建pojo类,将aliyun.oss中的属性设置在pojo类内,通过映射文件,将值映射到属性名上
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
}
@Autowired
private AliOSSProperties aliOSSProperties;
【遇到问题:spring提示】
【解决:添加依赖】
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configurationprocessor</artifactId>
</dependency>