写一份带注解的上传图片到服务器的java代码
时间: 2023-10-11 10:05:59 浏览: 84
以下是一个简单的上传图片到服务器的Java代码,带有注释:
```java
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.UUID;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
public class FileUploadController {
// 设置上传文件的保存路径
private static String UPLOAD_DIR = "uploads/";
// 处理文件上传请求的方法
@PostMapping("/upload")
public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file) {
try {
// 获取上传文件的原始文件名
String originalFileName = file.getOriginalFilename();
// 获取上传文件的后缀名
String fileExtension = originalFileName.substring(originalFileName.lastIndexOf("."));
// 生成唯一的文件名
String newFileName = UUID.randomUUID() + fileExtension;
// 设置上传文件的保存路径和文件名
String uploadFilePath = UPLOAD_DIR + newFileName;
// 获取上传文件的输入流
InputStream fileInputStream = file.getInputStream();
// 创建保存上传文件的目录
Path uploadDirPath = Paths.get(UPLOAD_DIR);
if (!Files.exists(uploadDirPath)) {
Files.createDirectories(uploadDirPath);
}
// 将上传文件保存到服务器
Files.copy(fileInputStream, Paths.get(uploadFilePath));
// 返回上传成功的响应
return ResponseEntity.ok().body("File uploaded successfully: " + uploadFilePath);
} catch (IOException e) {
// 返回上传失败的响应
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to upload file");
}
}
}
```
这是一个基于Spring Framework的文件上传控制器,使用了Spring的MultipartFile API处理文件上传。在代码中,我们首先设置了上传文件的保存路径,并定义了`handleFileUpload`方法来处理文件上传请求。在方法中,我们通过`file.getOriginalFilename()`方法获取上传文件的原始文件名,并通过`UUID.randomUUID()`方法生成了一个唯一的文件名,然后将上传文件保存到服务器上的指定目录中。最后,我们返回一个上传成功的响应或者上传失败的响应,具体取决于上传是否成功。
需要注意的是,上传文件的保存路径应该是一个绝对路径,可以根据具体项目的需要进行配置。在本例中,我们将上传文件保存到了当前项目的`uploads/`目录下。同时,为了避免上传文件的重名问题,我们使用了`UUID.randomUUID()`方法生成唯一的文件名。
阅读全文