Java程序中文件的上傳和下載是Web開發中經常用到的功能之一,在今天的文章中,我們將會介紹如何在Java程序中實現這些功能。
對于文件的上傳,我們可以使用Apache commons-fileupload庫來實現。我們需要先建立一個HTML表單,以接收用戶所上傳的文件:
<form method="post" enctype="multipart/form-data"> <input type="file" name="file"/> <input type="submit" value="上傳文件"/> </form>
接下來,在后端程序中,我們需要使用以下代碼來將文件保存到服務器上:
FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List<FileItem> items = upload.parseRequest(request); for(FileItem item : items) { if(!item.isFormField()) { String fileName = item.getName(); File file = new File("upload/" + fileName); item.write(file); } }
在上述代碼中,我們首先使用DiskFileItemFactory創建一個FileItemFactory對象,然后使用ServletFileUpload創建一個ServletFileUpload對象。接著,我們調用upload.parseRequest方法來解析請求,然后使用for循環來遍歷解析出來的FileItem對象,將文件保存到服務器上。
對于文件的下載,我們可以使用Java原生的IO庫來實現。我們可以使用以下代碼來實現文件下載功能:
String fileName = "file.txt"; File file = new File("upload/" + fileName); response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1")); OutputStream out = response.getOutputStream(); FileInputStream in = new FileInputStream(file); byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read(buffer)) >0) { out.write(buffer, 0, len); } in.close(); out.close();
在上述代碼中,我們首先創建一個File對象,然后使用response.setHeader方法來設置Content-Disposition請求頭,表示將文件作為附件進行下載。接著,我們使用輸出流將文件內容寫入響應中,并最終關閉流對象。