1.在表单中上传文件或图片时,因为文件和图片大小大于1k,因此不能使用get方法上传,所以要将传递方式改为“post”,而且要加上enctype=”multipart/form-data”,告诉服务器可以接受多样的表单的上传类型
<form action="http://localhost:8080/servletTest/FileUpload" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit">
<img src=""/>
</form>
2.在接受的servlet中,要设置接收文件的路径(multipartConfig为了方便修改,可以写到web.xml文件中)
//这是servlet的映射路径
@WebServlet("/FileUpload")
//这是文件的存储路径
@MultipartConfig(location="e:/")
3.修改文件名称,并写入指定路径中
public class FileUpload extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取类型为image的数据文件
Part part=request.getPart("image");
//获取提交文件的名称
String filename=part.getSubmittedFileName();
//获取文件的类型
String fixname = filename.substring( filename.lastIndexOf(".") );
//为上传文件生成一个独一的名称part.write(name+fixname);
String name=UUID.randomUUID().toString();
//将文件命名为name+fixname
part.write(name+fixname);
}
}