0
点赞
收藏
分享

微信扫一扫

网页文件上传问题—servlet实现

DYBOY 2022-05-16 阅读 120

网页文件上传问题—servlet实现_xml

web_xml:


<?xml version="1.0" encoding="UTF-8" ?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">


<servlet>

<servlet-name>up</servlet-name>

<servlet-class>servlet.UPLoadServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>up</servlet-name>

<url-pattern>/upload</url-pattern>

</servlet-mapping>


</web-app>


UPLoadServlet.java:


package servlet;


import java.io.File;

import java.io.IOException;

import java.util.Iterator;

import java.util.List;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import org.apache.commons.fileupload.*;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;



public class UPLoadServlet extends HttpServlet{


private static final long serialVersionUID = -5370788294495423714L;



protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

this.doPost(req, resp);

}


public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {


//System.out.println(request.getParameter("test"));

request.setCharacterEncoding("utf-8");// 设置字符编码为UTF-8, 统一编码,处理出现乱码问题



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

//response.setCharacterEncoding("utf-8");

boolean isMultipart = ServletFileUpload.isMultipartContent(request);//检查是否是一个文件上传请求

if(isMultipart){

System.out.println("isMultipart");

//实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload

DiskFileItemFactory factory = new DiskFileItemFactory();


//设置上传文件时用于临时存放文件的内存大小,这里是2K.多于的部分将临时存在硬盘

factory.setSizeThreshold(1024*2);

//设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录

File filetemp = new File("c://file");

if(!filetemp.exists()){

filetemp.mkdir();

}

factory.setRepository(filetemp);//临时文件


//以上两项可通过DiskFileItemFactory构参来创建

//DiskFileItemFactory factory = new DiskFileItemFactory(yourMaxMemorySize, yourTempDirectory);



//用上面的工厂实例化上传组件,

ServletFileUpload upload = new ServletFileUpload(factory);

//upload.setFileItemFactory(factory);

//如果ServletFileUpload实例中不设置上面的Factory则报java.lang.NullPointerException: No FileItemFactory has been set.


//设置最大上传大小 10M

upload.setSizeMax(1024*1024*10);

String name = "";

try {

List items = upload.parseRequest(request); // 得到所有FileItem

Iterator iter = items.iterator();

// 循环处理所有文件

while (iter.hasNext()) {

FileItem item = (FileItem) iter.next();

if (!item.isFormField()) {// 判断是否是表单元素(<input type="text" />单选,多选等)

name = item.getName();// 得到文件的名称

if(name==null || "".equals(name.trim())){

//未选择上传文件

continue;

}

long size = item.getSize();//文件长度

File file = new File("c://file//"+name);

if(file.exists()){

file.delete(); //删除掉已存在同名文件

}

item.write(file); //将文件写入

/**************************************/

//添加将 "c://file//"+name 添加到数据库

}else{

//<input name="test" size="40" type="text">

//String value = item.getString();//表单元素的值,用在非文件上传域中

//String fieldName = item.getFieldName();////表单元素的名称,用在非文件上传域中 **test**

System.out.println(item.getFieldName()+" "+new String(item.getString().getBytes(),"utf-8"));//处理中文问题

}

}


} catch (FileUploadException e) {

//处理文件尺寸过大异常

e.printStackTrace();

} catch (Exception e) {

// 处理文件写入时的异常

System.out.println("Write Error: "+name);

e.printStackTrace();

}

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

}



}

}




upLoad.html:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>

<body>

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

<input name="file" type="file" size="15">

<input type="submit" name="SUBMIT" >

</body>

</html>



JAR文件:

servlet-api.jar

standard.jar

jst1.jar

commons-io-1.3.1.jar

commons-fileupload-1.2.1.jar



举报

相关推荐

0 条评论