java接收前端传来的图片并保存到指定位置
时间: 2023-08-14 19:07:26 浏览: 262
首先,前端需要将图片以FormData的形式传递给后台Java。然后在Java中使用Servlet接收FormData,解析出图片文件,并将其保存到指定位置。
以下是一个简单的实现代码:
```java
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/upload")
@MultipartConfig
public class ImageUploadServlet extends HttpServlet {
private static final String UPLOAD_DIR = "uploads";
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取上传文件的目录
String appPath = request.getServletContext().getRealPath("");
String uploadPath = appPath + File.separator + UPLOAD_DIR;
// 如果目录不存在,则创建该目录
File uploadDir = new File(uploadPath);
if (!uploadDir.exists()) {
uploadDir.mkdir();
}
// 从请求中获取上传文件
Part filePart = request.getPart("file");
String fileName = UUID.randomUUID().toString() + "-" + Paths.get(filePart.getSubmittedFileName()).getFileName().toString();
// 将上传文件保存到指定目录
InputStream fileContent = filePart.getInputStream();
Files.copy(fileContent, Paths.get(uploadPath + File.separator + fileName));
response.getWriter().println("文件上传成功!");
}
}
```
在前端页面,需要使用HTML的form表单,将图片以FormData的形式提交给后台Java:
```html
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
```
以上代码中,`enctype="multipart/form-data"`表示表单数据是以二进制形式上传的。在Java中,使用`@MultipartConfig`注解开启文件上传功能,使用`request.getPart("file")`获取上传的文件。最后,使用`Files.copy`方法将文件保存到指定目录中。
阅读全文