Web 實現文件上傳

我使用了一個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("上傳完成................");
            }
        }
    }
}
相關文章
相關標籤/搜索