您的位置:首页 > 其它

利用包commons-fileupload-1.2.jar实现页面的附件上传

2009-03-31 14:05 337 查看
环境:客户端页面中form的action为本servlet,引入包commons-fileupload-1.2.jar

使用的servlet类FileUploadServlet.java代码如下:

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
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.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;

public class FileUploadServlet extends HttpServlet {

/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String dir = request.getSession().getServletContext().getRealPath("/");
System.out.println("dir:" + dir);
try {
DiskFileUpload fu = new DiskFileUpload();//--上传附件中用到的关键类

fu.setSizeMax(1024 * 1024 * 20);//--上传附件的最大值
fu.setSizeThreshold(1024 * 1024 * 5);//--给的内存大小
fu.setRepositoryPath(System.getProperty("java.io.tmpdir"));//--上传的附件大小大于给的内存大小时的临时文件存储路径
fu.setHeaderEncoding("UTF-8");

try {

List fileItem = fu.parseRequest(request);
Iterator it = fileItem.iterator();
while (it.hasNext()) {
FileItem item = (FileItem) it.next();
if (!item.isFormField() && null != item.getName() &&
0 != item.getName().trim().length()) {//--判断不是普通的form页面对象,及上传了附件
String clientPath = item.getName();
String fileName = new File(clientPath).getName();

File destDir = new File("D://");//--服务器上的存储路径

File file = new File(destDir, fileName);
item.write(file);
System.out.println("========文件上传成功");
}
}
} catch (Exception e) {
String str = "文件上载异常,错误信息:" + e.getMessage();
System.out.println(str);
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet 方法。单击左侧的 + 号以编辑代码。">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: