我使用了一個cos組件,將cos.jar包拷貝到lib下html
新建一個jsp頁面 dcumentUpload.jspjava
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>文檔上傳</title> <style> body {margin-top:100px;background:#fff;font-family: Verdana, Tahoma;} a {color:#CE4614;} #msg-box {color: #CE4614; font-size:0.9em;text-align:center;} #msg-box .logo {border-bottom:5px solid #ECE5D9;margin-bottom:20px;padding-bottom:10px;} #msg-box .title {font-size:1.4em;font-weight:bold;margin:0 0 30px 0;} #msg-box .nav {margin-top:20px;} </style> </head> <body> <div id="msg-box"> <!--enctype="multipart/form-data"文件上傳時必須的編碼 --> <form name="form1" action="/LuceneTest/DoUploadServlet" method="post" enctype="multipart/form-data" > <div class="title"> 請上傳要處理的文件,過程可能須要幾分鐘,請稍候片刻。 </div> <p> <input name="file1" type="file"> <br> </p> <p> <input type="submit" name="Submit" value="上傳"> <br> </p> </form> </div> </body> </html>
而後再建一個servlet來處理文件上傳jsp
package ytu.botao.servlet; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.oreilly.servlet.MultipartRequest; import com.oreilly.servlet.multipart.DefaultFileRenamePolicy; public class DoUploadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { process(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { process(request, response); } public void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); // 文件上傳採用cos組件上傳,可更換爲commons-fileupload上傳,文件上傳後,保存在upload文件夾 // 獲取文件上傳路徑 String saveDirectory = getServletContext().getRealPath("/") + "resource"; // 打印上傳路徑信息 System.out.println(saveDirectory); // 每一個文件最大50m int maxPostSize = 50 * 1024 * 1024; // 採用cos缺省的命名策略,重名後加1,2,3...若是不加dfp重名將覆蓋 DefaultFileRenamePolicy dfp = new DefaultFileRenamePolicy(); // response的編碼爲"UTF-8",同時採用缺省的文件名衝突解決策略,實現上傳,若是不加dfp重名將覆蓋 MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize, "UTF-8", dfp); // 輸出反饋信息 Enumeration files = multi.getFileNames(); while (files.hasMoreElements()) { System.err.println("ccc"); String name = (String) files.nextElement(); File f = multi.getFile(name); if (f != null) { // ----------打開文件所放文件夾 取出文件名字 String fileName = multi.getFilesystemName(name); // 獲取上傳文件的擴展名 String extName = fileName .substring(fileName.lastIndexOf(".") + 1); // 文件全路徑 String lastFileName = saveDirectory + "\\" + fileName; // 獲取須要轉換的文件名,將路徑名中的'\'替換爲'/' String converfilename = saveDirectory.replaceAll("\\\\", "/") + "/" + fileName; System.out.println("須要轉換的文件:" + converfilename); // response.setContentType(arg0) out.print("上傳完成................"); } } } }