程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 利用servlet3.0上傳,純原生上傳,不依賴任何第三方包,servlet3.0

利用servlet3.0上傳,純原生上傳,不依賴任何第三方包,servlet3.0

編輯:JAVA綜合教程

利用servlet3.0上傳,純原生上傳,不依賴任何第三方包,servlet3.0


tomcat7裡面自帶的servlet3.0.jar,支持很多新特性,例如,annotation配置servlet,上傳,異步等等。。。。

如果你的tomcat版本低於7的話,單獨在項目中引入servlet3.0.jar的話,有可能會出錯,具體沒研究過,可能是不兼容吧。所以要使用servlet3.0新特性的話,盡量使用tomcat7

不多說了,貼上代碼

@WebServlet(name = "uploadServlet", urlPatterns = "/uploadServlet")
@MultipartConfig
public class ServletUpload extends HttpServlet {

    private static final long serialVersionUID = 2527441790014487640L;

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        doPost(request, response);
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) {
        try {
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            Collection<Part> parts = request.getParts();
            if (null == parts) {
                // 拋出異常
            }
            for (Part part : parts) {
                String header = part.getHeader("content-disposition");
                String fileName = getFileName(header);
                part.write("d:/" + fileName);
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ServletException e) {
            e.printStackTrace();
        }

    }

    /**
     * 獲得文件名 fileName-----取得上傳文件的後綴+uuid
     * 
     * @param header
     * @return
     */
    private String getFileName(String header) {
        String suffix = header.substring(header.lastIndexOf("."),
                header.length() - 1);
        String fileName = UUID.randomUUID().toString().replace("-", "");
        return fileName + suffix;
    }
}

看起來是不是很簡單吧,@MultipartConfig標注主要是為了輔助Servlet3.0中HttpServletRequest提供的對上傳文件的支持。該標注寫在Servlet類的聲明之前,一表示該Servlet希望處理的請求時multipart/form-data類型的。另外,該標注還提供了若干屬性用於簡化對上傳文件的處理

@MultipartConfig標注屬性

fileSizeThershold         int型        是(可選)     描述:當前數據量大於該值時,內容將被寫入文件。

location                  String型       是(可選)     描述:存放生成文件的地址

maxFileSize             long型         是(可選)     描述:允許上傳的文件最大值,默認為-1,表示沒有限制

maxRequestSize      long型         是(可選)     描述:針對 multipart/form-data 請求的最大數量,默認為-1,表示沒有限制

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved