JAVA 是一種編程語言,其在文件上傳和下載方面提供了一些便利的機制。以下是一些關于JAVA里文件上傳和下載的實現思路。
在JAVA中實現文件上傳通常需要使用關鍵字“multipart/form-data”和多部分表單。首先,在前端開發頁面時需要設置上傳表單的屬性為“multipart/form-data”,這樣后端的JAVA服務器就能讀取上傳文件的二進制數據了。
在JAVA服務器端,需要添加一些包括apache commons-fileupload和servlet-api的依賴。這些依賴包提供了上傳文件的接收和處理機制。
具體實現方式如下:
// 1- 設置文件上傳參數
DiskFileItemFactory factory = new DiskFileItemFactory(); // 設置內存限制,超過內存限制的文件將被寫入臨時文件 factory.setSizeThreshold(1024 * 1024); // 設置臨時文件目錄 factory.setRepository(new File("<path/to/temp/dir>")); // 2- 創建文件上傳處理對象 ServletFileUpload upload = new ServletFileUpload(factory); // 設置最大文件尺寸限制 upload.setFileSizeMax(1024 * 1024 * 10); // 設置最大請求尺寸限制 upload.setSizeMax(1024 * 1024 * 15); // 3- 處理上傳文件 List fileItems = upload.parseRequest(request); // 迭代處理所有上傳的文件 for (FileItem item : fileItems) { // 如果此 item 為文件 if (!item.isFormField()) { // 獲取上傳的文件流 InputStream inputStream = item.getInputStream(); // 在服務器端保存文件 saveFile(fileItem.getName(), inputStream, "<path/to/upload/dir>"); } }
在 JAVA 中實現文件下載需要使用到系統 IO Stream API。JAVA 提供了 BufferedOutputStream 和 BufferedInputStream 兩個類來幫助讀取和寫入數據。這些類使用起來相當方便。
實現代碼如下:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String filepath = "<path/to/file>"; File downloadFile = new File(filepath); FileInputStream inputStream = new FileInputStream(downloadFile); //設置響應內容類型 response.setContentType("application/octet-stream"); //設置響應頭,保存文件名 response.setHeader("Content-Disposition","attachment;filename=" + downloadFile.getName()); //輸出流 OutputStream outputStream = response.getOutputStream(); byte[] buffer = new byte[4096]; int len = 0; while ((len = inputStream.read(buffer)) >0) { outputStream.write(buffer, 0, len); } outputStream.flush(); outputStream.close(); inputStream.close(); }
總體來說,JAVA 提供了多種方法用于文件上傳和下載。經過以上實踐,相信大家對 JAVA 的文件上傳和下載已經有了初步的了解。