在Java Web開發中,文件上傳和下載是非常常見的操作,本文將會介紹如何在Java Web中實現文件的上傳和下載。
文件上傳
文件上傳通常使用表單提交來完成,需要注意的是表單必須使用enctype="multipart/form-data"屬性進行指定。在后臺代碼中,需要使用Servlet的doPost方法來接收上傳的數據。以下是一個簡單的上傳示例:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 獲取上傳文件的保存路徑 String savePath = this.getServletContext().getRealPath("/WEB-INF/upload"); File file = new File(savePath); // 如果目錄不存在,就創建目錄 if (!file.exists() && !file.isDirectory()) { System.out.println("目錄不存在,創建目錄:" + savePath); file.mkdir(); } // 獲取上傳的文件集合 Collectionparts = request.getParts(); // 遍歷上傳的文件集合 for (Part part : parts) { // 獲取上傳文件的名稱 String filename = part.getSubmittedFileName(); // 把上傳文件保存到指定的路徑 part.write(savePath + File.separator + filename); } }
文件下載
文件下載需要根據文件的名稱或路徑從服務器上獲取文件并發送給客戶端。在代碼中需要設置響應頭的Content-Disposition屬性來指定下載的文件名,同時需要設置Content-Type屬性來指定文件的類型。以下是一個簡單的下載示例:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 獲取需要下載的文件名 String fileName = request.getParameter("fileName"); // 獲取下載文件的路徑 String filePath = this.getServletContext().getRealPath("/WEB-INF/upload" + File.separator + fileName); File file = new File(filePath); if (file.exists()) { // 設置響應頭 response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); // 獲取文件輸入流 FileInputStream in = new FileInputStream(file); // 獲取輸出流 ServletOutputStream out = response.getOutputStream(); // 緩沖區大小 byte[] buffer = new byte[1024]; int len = 0; // 寫出到客戶端 while ((len = in.read(buffer)) >0) { out.write(buffer, 0, len); } in.close(); out.close(); } }
以上是文件上傳和下載的實現方法,可以根據實際需求進行相應的修改和擴展。
上一篇html畫長方形的代碼
下一篇java json 縮進