一、jsp中:

 1 <body>
 2     <!-- 注意: 1. type="file"; 2.method="post" ; 3.enctype="multipart/form-data" -->
 3     <form action="UploadServlet" method="post" enctype="multipart/form-data">
 4         雇员编号:<input type="text" name="empno"/><br/><br/>
 5         雇员姓名:<input type="text" name="ename"/><br/><br/>
 6         所在部门:
 7                 <select name="deptno">
 8                     <option value="10">销售部</option>
 9                     <option value="20">IT部</option>
10                     <option value="30">人力部</option>
11                 </select><br/><br/>
12         验证码:<input type="text" name="code"><img id="code" alt="请刷新" src="validateCodeServlet" οnclick="changeCode()" style="cursor:hand;"><a href="javascript:changeCode()">换一张</a><br/><br/>
13
14
15         头像:<input type="file" name="uploadFile">
16             <img src="${image_path}" title="${image_name}" width="200" height="200">
17         <br/><br/>
18
19         <input type="reset" value="重置"/>
20         <input type="submit" value="注册"/>
21     </form>
22 </body>
23 </html>

二、导入工具包

三、servlet中取得数据

package servlet;import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;/*** Servlet implementation class UploadServlet*/
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//判断上传表单是否为multipart/form-data类型if(ServletFileUpload.isMultipartContent(request)){try {//1. 创建DiskFileItemFactory对象,设置缓冲区大小和临时文件目录DiskFileItemFactory factory = new DiskFileItemFactory();//System.out.println(System.getProperty("java.io.tmpdir"));//默认临时文件夹//2. 创建ServletFileUpload对象,并设置上传文件的大小限制。ServletFileUpload  sfu = new ServletFileUpload(factory);sfu.setSizeMax(10*1024*1024);//以byte为单位    不能超过10M  1024byte = 1kb  1024kb=1M 1024M = 1Gsfu.setHeaderEncoding("utf-8");//3. 调用ServletFileUpload.parseRequest方法解析request对象,得到一个保存了所有上传内容的List对象。List<FileItem> fileItemList = sfu.parseRequest(request);Iterator<FileItem> fileItems = fileItemList.iterator();//4. 遍历list,每迭代一个FileItem对象,调用其isFormField方法判断是否是上传文件while(fileItems.hasNext()){FileItem fileItem = fileItems.next();//普通表单元素if(fileItem.isFormField()){String name = fileItem.getFieldName();//name属性值String value = fileItem.getString("utf-8");//name对应的value值
                        System.out.println(name + " = "+value);}//<input type="file">的上传文件的元素else{String fileName = fileItem.getName();//文件名称System.out.println("原文件名:" + fileName);//Koala.jpg
                        String suffix = fileName.substring(fileName.lastIndexOf('.'));System.out.println("扩展名:" + suffix);//.jpg//新文件名(唯一)String newFileName = new Date().getTime() + suffix;System.out.println("新文件名:" + newFileName);//image\1478509873038.jpg//5. 调用FileItem的write()方法,写入文件File file = new File(request.getServletContext().getRealPath("image")+"\\"+newFileName);System.out.println(file.getAbsolutePath());fileItem.write(file);//6. 调用FileItem的delete()方法,删除临时文件
                        fileItem.delete();/** 存储到数据库时注意*     1.保存源文件名称   Koala.jpg*  2.保存相对路径      image/1478509873038.jpg* */request.setAttribute("image_name",fileName);request.setAttribute("image_path","image/"+newFileName);request.getRequestDispatcher("/upload.jsp").forward(request, response);}}} catch (FileUploadException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}}

转载于:https://www.cnblogs.com/ccw95/p/6040256.html

Java Web——图像上传相关推荐

  1. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  2. Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用

    问题:Jenkins 2.16.3默认没有Launch agent via Java Web Start,如下图所示,而这种启动方式在Windows上是最方便的. 如何设置才能让出来呢? 打开&quo ...

  3. Java Web项目结构

    Java Web项目结构(一般) 1.Java src 2.JRE System Library 3.Java EE 6 Libraries 4.Web App Libraries 5.WebRoot ...

  4. Java Web 中的一些问题

    http://localhost:8080/struts2demo/online/userLogin.jsp 请求模式 :// 主机名名称(或者服务器名称) : 端口 / Servlet容器的名称(通 ...

  5. java web ubuntu_Ubuntu部署Java web项目

    登录服务器和给服务器传输文件,使用的工具是Xshell Xftp Mysql 安装mysql 输入:sudo apt-get update                     更新软件列表 输入: ...

  6. JAVA Web项目中所出现错误及解决方式合集(不断更新中)

    JAVA Web项目中所出现错误及解决方式合集 前言 一.几个或许会用到的软件下载官网 二.Eclipse的[preferences]下没有[sever]选项 三.Tomcat的安装路径找不到 四.T ...

  7. 使用Netbeans创建java Web项目

     使用Netbeans创建java Web项目 需要先搭建JDK参考: Java开发环境的搭建以及使用eclipse创建项目 Linux环境安装卸载JDK 1.安装Tomcat 去官网下载最新的T ...

  8. java axis2 开发_基于Apache axis2开发Java Web服务

    1.安装配置axis2环境 下载好后把axis2-1.4.1-war目录下面的axis2.war发布到tomcat的webapps中. 发布好,访问:http://localhost:8079/axi ...

  9. java web三大组件之filter过滤器

    过滤器是java web中相当重要的组成成分,是JavaWeb三大组件之一,它与Servlet很相似.不过过滤器有以下三条特性: 过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个Servle ...

最新文章

  1. 网页素材大宝库:高质量的免费 PSD 素材【系列四】
  2. 【软件工程】填空题题库
  3. ansible自动化管理
  4. TopN算法与排行榜
  5. ASP.NET MVC Global.cs - 应用程序事件
  6. 在Activity启动过程中如何任务栈的栈顶是否是将要启动的Activity的实例
  7. mysql查询姓王的信息代码_MySQL查询语句练习题
  8. 如何改变maven项目的pom文件中默认的主代码目录 以及默认的测试代码目录?
  9. mac新建react脚手架
  10. Heritrix 3.1.0 源码解析(十四)
  11. [VGG16]——网络结构介绍及搭建(PyTorch)
  12. 2018DeeCamp笔试题目第二套B卷
  13. google账号如何正确登陆
  14. Hadoop回顾:(一)Hadoop生态系统简介
  15. android自定义相机打开闪光灯,Android 照相机(闪光灯,切换摄像头)
  16. Internet——Download——Manager学习记录
  17. ResourceUtils
  18. Magento 数据库EVA
  19. ArcGIS的栅格数据空间分析——栅格插值(1)
  20. go实现dgraph的各种操作

热门文章

  1. 收银系统服务器数据库,收银系统服务器数据库
  2. android gradle is插件,android gradle 插件创建 configuration
  3. mysql+零时数据结构,MySql主要索引数据结构
  4. asp.net mvc连接mysql_asp.net mvc4连接mysql
  5. android view setx,Android的setX()和setY()表现不可思议
  6. mariadb 和mysql主从_MariaDB主从同步
  7. PyCharm配置anaconda环境 安装第三方库
  8. sess.run()详解
  9. python抽奖游戏大全_抽奖游戏
  10. 数据结构与算法(3)——树(二叉、二叉搜索树)