上傳文件(使用apache commons.fileupload)

jsp頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>File upload</title>
</head>
<body>
<form name="myform" action="/Fileupload" method="post" enctype="multipart/form-data">
File:<br>
<input type="file" name="myfile"><br><br>

<input type="submit" name="submit" id="submit" value="Commit">
</form>
</body>
</html>


Fileupload.java

public class Fileupload extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {

try {
//構建上傳路徑
String uploadPath = getServletContext().getRealPath("/upload"); // 上傳文件的真正存儲目錄
//String uploadPath = "F:/excise/web/upload";
File uploadFile = new File(uploadPath);//獲得目錄對象
//如果不存在,則創建該目錄
if (!uploadFile.exists()) {
uploadFile.mkdir();
}
//建立系統臨時文件目錄,用於構建DiskFileItemFactory
File tempfile = new File(System.getProperty("java.io.tmpdir"));
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
diskFileItemFactory.setSizeThreshold(4096); // 設置緩衝區大小4kb
diskFileItemFactory.setRepository(tempfile); //設置臨時目錄
ServletFileUpload fu = new ServletFileUpload(diskFileItemFactory); //處理上傳文件的對象
fu.setHeaderEncoding("utf-8");//設置編碼,否則爲亂碼
fu.setSizeMax(4194304);//設置文件大小
List<FileItem> fileItems = fu.parseRequest(request); //解析上傳文件請求,返回一個List
for (FileItem fi : fileItems) {
String fileName = fi.getName();
if (fileName != null) {
File fullFile = new File(fileName);
File savedFile = new File(uploadPath, fullFile.getName());
fi.write(savedFile); //將上傳的文件寫入指定位置,設置指定名稱
}
}
System.out.println("upload succeed");
} catch (Exception e) {
e.printStackTrace();
}
}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章