您的位置:首页 > Web前端 > JavaScript

JSP/servlet实现文件上传下载和删除

2013-02-01 15:42 806 查看

JSP/servlet实现文件上传下载和删除

上传:

用的是commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar组件,可以去apache官网上去下载,然后放到WebRoot/WEB-INF/lib目录下

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>File upload</title>
</head>
<body>
<!-- action="fileupload"对应web.xml中<servlet-mapping>中<url-pattern>的设置.-->
<!-- 必须是multipart的表单数据,才能完整的传递文件数据 -->
<form name="myform" action="fileupload" method="post"
enctype="multipart/form-data">
请选择文件:<br>
<input type="file" name="myfile"><br>
<br>
<input type="submit" name="submit" value="Commit">
</form>
</body>
</html>

web.xml里加上下面几行:

<servlet>
<servlet-name>Upload</servlet-name>
<servlet-class>am.demo.Upload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Upload</servlet-name>
<url-pattern>/fileupload</url-pattern>
</servlet-mapping>

src目录下新建文件Upload.java:

package am.demo;

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.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

@SuppressWarnings("serial")
public class Upload extends HttpServlet {
private String uploadPath = "d://temp"; // 上传文件的目录

@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
try {
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();

// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);

List<FileItem> items = upload.parseRequest(request);// 得到所有的文件
Iterator<FileItem> i = items.iterator();
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
String fileName = fi.getName();
if (fileName != null) {
File fullFile = new File(fi.getName());
File savedFile = new File(uploadPath, fullFile.getName());
fi.write(savedFile);
}
}

response.setContentType("text/html;charset=GBK");
response.getWriter().print(
"<mce:script language='javascript'><!--
alert('上传成功');window.location.href='index.jsp';
// --></mce:script>");
} catch (Exception e) {
// 可以跳转出错页面
e.printStackTrace();
}
}

public void init() throws ServletException {
File uploadFile = new File(uploadPath);
if (!uploadFile.exists()) {
uploadFile.mkdirs();
}
}
}

再看下载Downlaod.java:

package am.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class Download extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {

String aFileName = new String(request.getParameter("name").getBytes(
"iso8859-1"), "gbk");

File fileLoad = new File("d:/temp", aFileName);

FileInputStream in = null; // 输入流
OutputStream out = response.getOutputStream();
byte b[] = new byte[1024];

try {

response.setContentType("application/x-msdownload;");

response.setHeader("Content-disposition", "attachment; filename="
+ new String(aFileName.getBytes("GBK"), "ISO-8859-1"));

// download the file.
in = new FileInputStream(fileLoad);
int n = 0;
while ((n = in.read(b)) != -1) {
out.write(b, 0, n);
}

} catch (Throwable e) {
e.printStackTrace();
} finally {
try {
in.close();
out.close();
} catch (Throwable e) {
e.printStackTrace();
}
}
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}

}

删除Delete.java

package am.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class Delete extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws FileNotFoundException, IOException {

String aFileName = new String(request.getParameter("name").getBytes(
"iso8859-1"), "gbk");

File file = new File("d:/temp", aFileName);

response.setContentType("text/html;charset=GBK");

if (!file.isDirectory()) {
file.delete();
response.getWriter().print(
"<mce:script language='javascript'><!--
alert('删除成功');window.location.href='index.jsp';
// --></mce:script>");
} else {

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
}


本文出自 “程序员的进阶之路” 博客,请务必保留此出处http://gejiajia.blog.51cto.com/2688690/1130793
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: