问题引入
当我们在jsp页面想要上传一个图片到本地并在另一个页面回显时,需要怎样处理?需要注意什么问题?
实现步骤
一:下载好需要的jar包
1.comons-fileupload.jar
2.commons-io.jar
二.编写jsp页面
<form action="upload" method="post" enctype="multipart/form-data">
<input type="text" name="name" value="${name}">
上传头像:<br><input type="file" name="photo" ><br>
<input type="submit" value="点击上传">
</form>
注意
1.当form表单要向servlet传的数据类型为图片时,需要首先在表单中加上enctype=“multipart/form-data”,用于表单里有图片上传的情况。
2.表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作. enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。
3.这时如果表单中除了文件,还有其他类型的内容时,Servlet中用request是获取不到值的。
三.Servlet获取图片并上传到本地指定文件夹
代码(1):
@WebServlet(name="upload",urlPatterns = "/upload")
public class UploadFileServlet extends HttpServlet {
BlogDaoImpl bd = new BlogDaoImpl();
SmartUpload su = new SmartUpload();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DiskFileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
request.setCharacterEncoding("utf-8");
response.setCon