当前项目地址localhost:8080/qvod
文件上传地址localhost:9090/img
(可将当前TomCat文件复制一份,将复制的那份更改xml文件相当于外服务器)
建立一个jsp文件:
<a href="${pageContext.request.contextPath }/UpFile.jsp">上传图片</a>
建立Upfile.jsp:body内容如下
<form action="${pageContext.request.contextPath }/fileUpServlet2"
method="post" enctype="multipart/form-data">
<input type="text" name="mytext"> <br>
<input type="file" name="headPicure"> <br>
<input type="submit">
</form>
注意:因为是上传文件,enctype一定要修改为multipart/form-data 提交方式也要更改为post
之后建立名字为fileUpServlet2的Servlet
重写doGet方法:
DiskFileItemFactory dfif = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(dfif);
try {
List<FileItem> items = sfu.parseRequest(request);
for (FileItem item:items) {
if (item.isFormField()) {
System.out.println(item.getFieldName()+"========"+item.getString("UTF-8"));
}
else {
String uuid = UUID.randomUUID().toString();
String imgPath =(String) this.getServletContext().getAttribute("imgBasicPath");
String imgName = item.getName();
if (item.getSize()>0) {
String savePath = imgPath+"/"+uuid+imgName;
Client c = Client.create();
WebResource res = c.resource(savePath);
res.put(item.getInputStream());
}
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}`
需要注意的是:因为之前文件的解码类型是multipart/form-data与默认的提交类型不一样,因此正常的reuqest.getparameter()等方法就不能取到结果,文件上传需要专门使用文件上传类也就是DiskFileItemFactory 和ServletFileUpload
运行前两个虚拟主机确保开启状态,运行结果如下: