multipartfile 非必传_Java原生服务器接收上传文件 不使用MultipartFile类
时间: 2023-08-24 11:14:21 浏览: 236
如果您不想使用 Spring 的 MultipartFile 类,您可以使用 Java Servlet API 提供的 Part 接口来处理上传的文件。
您可以在 Servlet 中使用 HttpServletRequest 对象来获取上传的文件。使用 HttpServletRequest 对象的 getParts() 方法可以返回上传文件的集合。然后,您可以遍历这个集合并使用 Part 接口来获取上传文件的信息,如文件名、大小和内容等。
下面是一个处理上传文件的示例代码:
```java
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Collection<Part> parts = request.getParts();
for (Part part : parts) {
String fileName = getFileName(part);
if (fileName != null && !fileName.isEmpty()) {
// 处理上传文件
InputStream inputStream = part.getInputStream();
// ...
}
}
}
/**
* 获取上传文件的文件名
*/
private String getFileName(Part part) {
String contentDisposition = part.getHeader("content-disposition");
if (contentDisposition != null) {
String[] tokens = contentDisposition.split(";");
for (String token : tokens) {
if (token.trim().startsWith("filename")) {
return token.substring(token.indexOf("=") + 2, token.length() - 1);
}
}
}
return null;
}
}
```
在上面的代码中,使用了 @MultipartConfig 注解来指定 Servlet 应该支持文件上传。在 doPost() 方法中,使用 HttpServletRequest 对象的 getParts() 方法来获取上传文件的集合。然后,遍历这个集合来处理上传的每个文件。
对于每个上传的文件,使用 Part 接口的 getInputStream() 方法来获取文件内容的输入流,然后就可以对文件进行处理了。在上面的示例代码中,只是简单地获取了上传文件的文件名,并没有对文件内容进行处理。
需要注意的是,使用 Part 接口处理文件上传时,需要注意上传文件的大小限制、文件名的编码方式等问题。
阅读全文