在很多的场景下,我们都需要上传图片,比如在朋友圈上传自己喜欢的照片,为自己的账号设置一个精美的头像,为自己商店上传货物照片。这些都需要我们将图片进行上传并将图片保存在服务器上将图片的地址存放在mysql数据库中。
servlet文件中获取上传的资料
protected void addCarInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cars c=new Cars();
try {
//文件保存路径
String filePath = getServletContext().getRealPath("/");
System.out.println(filePath+"==============1");
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);
Iterator<?> iter = items.iterator();
while(iter.hasNext()){
FileItem item = (FileItem)iter.next();
if(item.isFormField()){ //普通表单域//程序逐个判断input文件的作用是普通的表单还是上传文件的表单
//获取input的name值
String name = item.getFieldName();
//获取inpout输入的值
String value = item.getString();
System.out.println(name+"==="+value);
if(name.equals("gname")){
System.out.println(value+"====");
c.setGname(value);
}
}else{//上传文件域
//文件名称
String fileName = item.getName(); //获取file表单的Name
fileName = fileName.substring(fileName.lastIndexOf("\\") + 1,fileName.length());
System.out.println(fileName+"===============3");
String path = filePath + "images\\" + fileName;//将地址进行拼接,这个地址是将文件存放的地址
System.out.println("文件上传到:" + path);
String p="images/" + fileName;//将地址 拼接好存放在数据库中,方便拿取数据
c.setPic(p);
File file = new File(path);
item.write(file);
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Integer a=cs.addCarsInfo(c);
if(a!=null){
System.out.println("成功了!");
response.sendRedirect("asset.html");
}else{
response.sendRedirect("addCarsInfo.html");
}
}
前端页面代码
<form action="carServlet?type=1" method="post" enctype="multipart/form-data"><!-- enctype="multipart/form-data"在上传图片是需要在form表单里面加入的属性值 -->
汽车名:<input type="text" value="" name="gname" placeholder="请输入汽车名!"><br/>
上传图片:<input type="file" name="pic"><br/>
<input type="submit" value="添加">
</form>
网友评论