使用common-file-upload包进行文件上传。

用到的jar包:

    commons-fileupload-1.3.1.jar

    commons-io-2.2.jar

    commons-lang-2.4.jar

jsp 页面编码:

<form action="UploadFileServlet" enctype="multipart/form-data" method="post">

     <input type="text" name="name" value="张三"/>

     <input type="text" name="title" value="标题"/>

     <input type="file" name="file" />

     <button type="submit">提交</button>

    </form>

servlet编码:

    

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//设置收发请求的编码:

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

String path=request.getContextPath(); //'/weblibo'

String basePath=request.getScheme()+"://"+request.getServerName()+"/"+request.getServerPort()+path+"/";

String name,title,file;

//设置文件的临时目录:

File tempPath=new File("d:/admin/temp");

if(!tempPath.exists()){

tempPath.mkdirs();

}

//文件的真实目录

String realPath =this.getServletContext().getRealPath("upload"); //项目里必须要有upload文件夹。

System.out.println(realPath);

//isMultipartContent方法方法用于判断请求消息中的内容是否是“multipart/form-data”类型

if(ServletFileUpload.isMultipartContent(request)){

//采用参数指定临界值和系统临时文件夹构造文件项工厂对象。

FileItemFactory factory = new DiskFileItemFactory(5000, tempPath);

//使用提供的工厂构造FileItem instances

ServletFileUpload servletFileUpload = new ServletFileUpload(factory);

try {

//解析表单字段

List<FileItem> items=servletFileUpload.parseRequest(request);

for(FileItem item:items){

//判断是否是普通表单字段

if(item.isFormField()){

String inputName=item.getFieldName();

if(inputName.equals("name")){

name=item.getString("utf-8");

}else if(inputName.equals("title")){

title=item.getString("utf-8");

}else if(inputName.equals("file")){

file=item.getString("utf-8");

}

}else {

//文件表单字段

String fileName=item.getName();

// 2.规定文件的格式和大小

long size = 1024 * 1024 * 1024;

long fileSize=item.getSize();

//文件大了

if(size<fileSize){

response.getWriter().print("<script>alert('文件过大!')</script>");

}else{

//文件合适

item.write(new File(realPath + "/" + fileName));

request.setAttribute("message", "你好");

request.getRequestDispatcher("admin/myjsp.jsp").forward(request, response);

}

}

}

} catch (FileUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

PrintWriter out = response.getWriter();

out.println("</HTML>");

out.flush();

out.close();

}




web.xml编码:

 <servlet>

    <description>This is the description of my J2EE component</description>

    <display-name>This is the display name of my J2EE component</display-name>

    <servlet-name>UploadFileServlet</servlet-name>

    <servlet-class>servlet.UploadFileServlet</servlet-class>  //包名.servlet

  </servlet>


  <servlet-mapping>

    <servlet-name>UploadFileServlet</servlet-name>

    <url-pattern>/UploadFileServlet</url-pattern>   //这个地方直接写“/servlet名”,不加包名。

  </servlet-mapping>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值