首先需要两个第三方Jar包
上传与下载文件的Servlet
package com.servlet;
import java.io.File;
import java.io.FileInputStream;
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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.dao.UpFileDAO;
import com.vo.UpFileVo;
public class UpLoadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
// 从硬盘下载文件
// String fileName=request.getParameter("fileName");
//
// String path = super.getServletContext().getRealPath("\\");
//
// File file = new File(path + "upload\\" + fileName);
//
// if(file.exists()){
// 从数据库下载文件
int id = Integer.parseInt(request.getParameter("id"));
UpFileDAO upDao = new UpFileDAO();
UpFileVo upfile = upDao.findFileById(id);// 得到文件
// InputStream input=null;
OutputStream output = null;
try {
// input=new FileInputStream(file);
//
// byte[] size=new byte[input.available()];
//
// input.read(size);
// 设置下载的mime类型
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename="
+ upfile.getFileName());
output = response.getOutputStream();
output.write(upfile.getFilecontent());
output.flush();
} catch (RuntimeException e) {
e.printStackTrace();
} finally {
if (output != null) {
output.close();
}
// if(input!=null){
// input.close();
// }
}
}
// }
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 判断是否有属性mutilpart
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
try {
if (isMultipart) {
// 创建文件列表工厂
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
UpFileDAO upDao = new UpFileDAO();
// 找到文件域
for (FileItem fileItem : items) {
if (!fileItem.isFormField()) {
// 获得文件的一些信息
// System.out.println(fileItem.getFieldName());
// System.out.println(fileItem.getName());
// System.out.println(fileItem.getSize());
// System.out.println(fileItem.get()); // 文件内容
// 获得上传的文件名字
String fileName = fileItem.getName();
fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);// 文件的名字
// 获取上传文件的路径
String path = super.getServletContext().getRealPath("\\");
File file = new File(path + "upload\\" + fileName);
OutputStream output = null;
//
// try {
// output = new FileOutputStream(file);
//
// output.write(fileItem.get());
//
// output.flush();
// output.flush();
// } catch (RuntimeException e) {
// e.printStackTrace();
// } finally {
// if (output != null) {
// output.close();
// }
// }
// 将文件写到数据库中
UpFileVo upfile = new UpFileVo();
upfile.setFileName(fileName);
upfile.setFileSize(fileItem.getSize());
upfile.setFilecontent(fileItem.get());
boolean b = upDao.insertUpFile(upfile);
// 如果数据库添加失败,则将上传得文件删除
if (!b) {
fileItem.delete();
}
} else {
if ("expireTime".equals(fileItem.getFieldName())) {
System.out.println(fileItem.getString());
}
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
response.sendRedirect("UpFileListServlet");
}
}
?