色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java 實現(xiàn)文件上傳和下載

Java運用于Web開發(fā)領(lǐng)域,常常需要實現(xiàn)文件的上傳和下載功能。通過Java的輸入輸出流,我們可以很方便的將文件上傳到服務(wù)器或者下載到本地。下面給大家介紹一下如何使用Java實現(xiàn)文件上傳和下載。

文件上傳
public class FileUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 檢查是否為文件上傳的請求
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
return;
}
// 配置上傳參數(shù)
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
try {
// 解析上傳文件
Listitems = upload.parseRequest(request);
for (FileItem item : items) {
// 如果為普通表單字段,處理數(shù)據(jù)
if (!item.isFormField()) {
// 獲取文件名
String fileName = item.getName();
// 存儲目錄
File uploadDir = new File("/upload");
if (!uploadDir.exists()) {
uploadDir.mkdir();
}
// 存儲文件
File file = new File(uploadDir, fileName);
item.write(file);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

上述代碼中,通過調(diào)用ServletFileUpload.isMultipartContent方法來判斷請求是否為文件上傳請求。若為文件上傳請求,使用DiskFileItemFactory和ServletFileUpload類來處理請求的數(shù)據(jù)。遍歷items列表檢查每個條目,如果不是表單字段,就將它存入指定路徑下的文件中。

文件下載
public class FileDownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 獲取文件名
String fileName = request.getParameter("fileName");
// 設(shè)定文件類型
response.setContentType("application/octet-stream");
// 文件下載
ServletOutputStream out = response.getOutputStream();
FileInputStream in = null;
try {
File file = new File("/upload", fileName);
in = new FileInputStream(file);
byte[] buffer = new byte[4096];
int length;
while ((length = in.read(buffer)) != -1) {
out.write(buffer, 0, length);
}
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(out);
}
}
}

上述代碼中,通過獲取參數(shù)fileName來獲取需要下載的文件名。設(shè)定文件類型為application/octet-stream,表示該文件是二進(jìn)制流文件。使用FileInputStream來讀取文件,使用ServletOutputStream來寫入文件。每次讀取的字節(jié)數(shù)為4096,每讀取一次就將數(shù)據(jù)寫入到response中。