目录
文件上传前端代码:
注意:
input标签内的name属性必须与uploadFile方法中的@RequestParam注解中指定的名称保持一致。该HTML文件默认放在resources->static下面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>选择文件上传</title>
</head>
<body>
<h2>文件上传</h2>
<!--upload是调用地址为upload的uploadFile方法-->
<!--传参方式POST-->
<!--enctype指定在提交表单时使用的数据编码类型。-->
<!--对于文件上传,enctype的值必须设置为multipart/form-data。-->
<!--这是因为文件上传涉及发送二进制数据,而标准的application/x-www-form-urlencoded编码类型只能处理文本数据-->
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="fileName" />
<button type="submit">上传</button>
</form>
</body>
</html>
文件上传后端代码:
ResponseEntity 是一个类,它表示整个 HTTP 响应,包括状态码,标头和正文。
@RequestParam注解用于从请求参数中获取名为"imgFile"的值,并将其绑定到后面的参数上。
@RestController
public class FileUploadController {
@PostMapping("/upload")
public ResponseEntity uploadFile(@RequestParam("fileName")MultipartFile file){
if (file.isEmpty()){
return ResponseEntity.badRequest().body("请选择要上传的文件:");
}
try{
String originalFilename=file.getOriginalFilename();
String newFilename= "memory"+"_"+originalFilename;
String filePath="D:/zanshi/"+newFilename;//注意该路径需要已经存在
file.transferTo(new File(filePath));
String message="文件上传成功\n";
return ResponseEntity.ok(message);
}catch (Exception e){
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("文件上传失败:"+e.getMessage());
}
}
}
测试:
以使用postman进行测试、端口8080 为例: