servlet实现图片的上传

servlet实现图片的上传

我们通常说的上传图片,是将图片上传到服务器上面,本篇以tomcat为例,实现简单的本地图片上传服务器。

一、图片的上传需要引入两个jar包:
commons-fileupload-1.4.jar,下载地址:http://commons.apache.org/proper/commons-fileupload/;
commons-io-2.6.jar,下载地址:http://commons.apache.org/proper/commons-io/download_io.cgi;

二、视图层

在这里插入图片描述
enctype=“multipart/form-data”:表示表单提交的数据时二进制数据。
上传文件窗口的input type为“ file ”.

三、控制层

		//设置编码为utf-8
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		FileItemFactory factory = new DiskFileItemFactory();
		 
         // 文件上传处理器
         ServletFileUpload upload = new ServletFileUpload(factory);
 
         // 解析请求信息
         List items = null;
         try {
             items = upload.parseRequest(request);
         }
         catch (FileUploadException e) {
             e.printStackTrace();
         }
 
         // 对请求信息进行判断
         Iterator iter = items.iterator();
         while (iter.hasNext()) {
             FileItem item = (FileItem) iter.next();
             // 信息为普通的格式
             if (item.isFormField()) {
                 String fieldName = item.getFieldName();
                 String value = item.getString();
                 request.setAttribute(fieldName, value);
             }
             // 信息为文件格式
             else {
            	String fileName = item.getName();//获得上传图片的名称
                 int index = fileName.lastIndexOf("\\");
                 fileName = fileName.substring(index + 1);
                 request.setAttribute("realFileName", fileName);
                 String basePath =  request.getSession().getServletContext().getRealPath("/images");
                 System.out.println(basePath);//打印当前位置
                 File file = new File(basePath, fileName);
                 try {
                	 
                     item.write(file);
                 }
                 catch (Exception e) {
                     e.printStackTrace();
                 }
             }
            
         }

图片上传之后,存放在tomcat的文件目录下,如:F:\apache-tomcat-9.0.16\wtpwebapps\srs\images
效果图:
在这里插入图片描述

(注:srs为项目名称)

上面已经完成了图片上传的基本功能,但是由于文件存放的名字相同,当上传上一张图片后,会把之前上传的图片覆盖掉,因此,我们需要将图片的名字更改成随机数的形式,保证文件名不一样。这里我采用的是在文件名称里面加上系统时间,具体做法如下:
在这里插入图片描述

Date now = new Date();
         		 SimpleDateFormat sf = new SimpleDateFormat("yyyy_MM_dd_hh_ss_mm");
         		 String pubtime = sf.format(now);
                 String fileName = pubtime+item.getName();
  • 15
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值