您的位置:首页 > 其它

@MultipartConfig,Servlet3.0通过Part进行文件上传

2017-08-04 19:50 393 查看
@MultipartConfig
使用注解@MultipartConfig 将一个 Servlet 标识为支持文件上传。Servlet3.0 将
multipart/form-data 的 POST 请求封装成 Part,通过 Part 对文件进行上传。
Servlet3 没有提供直接获取文件名的方法,需要从请求头中解析出来


upload.html

<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="f">
<br/>
<input type="submit" name="submit">
</form>


UploadServlet//request.getpart()单文件上传

@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public UploadServlet() {}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

// 获取请求项, 封装成Part对象
Part part = request.getPart("f");

String fileName = part.getSubmittedFileName();
System.out.println(fileName);

String direc = this.getServletContext().getRealPath("/upload/");
File dirf = new File(direc);

if(!dirf.exists()){
dirf.mkdirs();
}
part.write(direc+fileName);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}


使用request.getParts() 多文件上传

request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

Collection<Part> parts = request.getParts();

for(Part part:parts){
String fileName = part.getSubmittedFileName();
System.out.println(fileName);

if(null!=fileName&&!(fileName).trim().equals("")){

String direc = this.getServletContext().getRealPath("/upload/");
File dirf = new File(direc);

if(!dirf.exists()){
dirf.mkdirs();
}
part.write(direc+fileName);
}

}




可能遇到的问题:

使用Servlet3.0上传图片,无法使用part.getSubmittedFileName()方法解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息