文件的上传

来源:互联网 发布:cisco端口看环路 编辑:程序博客网 时间:2024/06/16 20:32

1.在WebRoot目录下新建一个upload文件,新建一个index.jsp和message.js文件。

1.新建一个UploadServle类;

package com.ask.upload;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

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.FileItem;

import org.apache.commons.fileupload.FileUploadException;

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

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

public class UploadServle extends HttpServlet {

@Override

protected void service(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

req.setCharacterEncoding("utf-8");

String uploadPath=this.getServletContext().getRealPath("upload");

System.out.println(uploadPath);

//创建一个上传文件的工厂

DiskFileItemFactory factory=new DiskFileItemFactory();

//设置大小

factory.setSizeThreshold(100*1024);

//创建上传文件的核心对象

ServletFileUpload upload=new ServletFileUpload(factory);

upload.setHeaderEncoding("utf-8");

//判断是否是以mime协议上传

boolean flag=upload.isMultipartContent(req);

if (flag) {

try {

List<FileItem> fileItems=upload.parseRequest(req);

for (FileItem fileItem : fileItems) {

if (fileItem.isFormField()) {

//必定是普通字段

String name=fileItem.getFieldName();

String value=fileItem.getString("utf-8");

System.out.println(name+"="+value);

}else{

//必定是上传字段

String upName=fileItem.getName();

//低IE  d:\e\r\e.jpg   非低IE e.jpg

int index=upName.lastIndexOf("\\");

if (index>=0) {

upName=upName.substring(upName.lastIndexOf(index+1));

}

System.out.println(upName);

InputStream is=fileItem.getInputStream();

OutputStream os=new FileOutputStream(uploadPath+"\\"+upName);

byte[] buf=new byte[1024];

int len=0;

while((len=is.read(buf))!=-1){

os.write(buf,0,len);

}

req.setAttribute("msg", "文件上传成功!");

req.getRequestDispatcher("message.jsp").forward(req, res);

}

}

} catch (FileUploadException e) {

e.printStackTrace();

req.setAttribute("msg", "文件上传失败!");

req.getRequestDispatcher("message.jsp").forward(req, res);

}

}

}

}

2.index.jsp文件代码如下:

<body>

<form action="${pageContext.request.contextPath}/up" method="post" enctype="multipart/form-data">

<table border="1" align="center">

<caption>

文件上传

</caption>

<tr>

<th>上传用户:</th>

<td>

<input type="text" name="username">

</td>

</tr>

<tr>

<th>上传文件:</th>

<td>

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

</td>

</tr>

<tr>

<td colspan="2" align="center">

<input type="submit" value="提交">

</td>

</tr>

</table>

</form>

</body>

3.message.jsp代码如下:

<body>

${msg }

</body>

4.xml配置如下:

<servlet>

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

<servlet-class>com.ask.upload.UploadServle</servlet-class>

</servlet>

<servlet-mapping>

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

<url-pattern>/up</url-pattern>

</servlet-mapping>

0 0