檔案上傳分析
阿新 • • 發佈:2019-01-10
檔案上傳步驟:
1.前臺寫檔案上傳表單
2.後臺編寫程式碼接收檔案上傳的檔案
需要 jar 包
前臺程式碼:
<form action="FileUpLoadServlet" method="post" enctype="multipart/form-data"> <input type="text" name="username"><br> <input type="text" name="address"><br> <input type="file" name="filename"><br> <input type="submit" value="上傳檔案"> </form>
後臺接收:
try { //臨時檔案目錄 String path = this.getServletContext().getRealPath("temp"); //建立磁碟檔案項工廠 DiskFileItemFactory factory = new DiskFileItemFactory(); //設定快取大小:單位是位元組,如果上傳檔案大小超過1024 * 1024,會建立一個臨時檔案 factory.setSizeThreshold(1024 * 1024); //設定臨時檔案的目錄 factory.setRepository(new File(path)); //上傳檔案核心類 ServletFileUpload upload = new ServletFileUpload(factory); //設定上傳檔名稱的編碼 upload.setHeaderEncoding("UTF-8"); //判斷是不是 multipart/form-data boolean multipartContent = upload.isMultipartContent(request); //如果是 multipart/form-data if (multipartContent) { //解析request獲得檔案項集合 List<FileItem> parseRequest = upload.parseRequest(request); //如果不為空 if(parseRequest!=null) { //遍歷檔案項 for(FileItem item : parseRequest) { //判斷是不是普通的表單項 boolean formField = item.isFormField(); //如果是一個普通的表單項,如type=text if(formField) { //獲取欄位名稱 String filedName = item.getFieldName(); //獲取欄位值 String fileValue = item.getString("UTF-8"); System.out.println(filedName+"----"+fileValue); }else { //如果type=file //獲取檔名 String fileName = item.getName(); //獲取檔案內容 InputStream inputStream = item.getInputStream(); //上傳地址 String path2 = this.getServletContext().getRealPath("upload"); FileOutputStream fileOutputStream = new FileOutputStream(path2+"/"+fileName); //拷貝 IOUtils.copy(inputStream, fileOutputStream); inputStream.close(); fileOutputStream.close(); //刪除temp檔案 item.delete(); } } } }else { //不是multipart/form-data,用request.getparameter("xxx");獲取引數 } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); }
例子:
form.html
控制檯列印:
tomcat-wenapps