a)建立upfile.jsp文件
<formaction="fileUpAction" method="post"enctype="multipart/form-data"> <!--method必須是post,enctype必須是multipart/form-data-->
username:<inputtype="text" name="username"/><br/>
<input type="file"name="file"><br/>
<input type="submit"value="submit"/>
</form>
b)編寫文件上傳的Servlet類
protected voiddoPost(HttpServletRequest req, HttpServletResponse resp)
throwsServletException, IOException {
//設置工廠
DiskFileItemFactory factory = new DiskFileItemFactory();
String path =req.getRealPath("/upload");
//設置文件存儲位置
factory.setRepository(newFile(path));
//設置大小,如果 文件小於設置大小的話,放入內存中,如果大於的話則放入磁盤中
factory.setSizeThreshold(1024* 1024);
ServletFileUpload upload = new ServletFileUpload(factory);
//設置爲中文編碼的方式
upload.setHeaderEncoding("utf-8");
try {
List<FileItem>list = (List<FileItem>) upload.parseRequest(req);
for (FileItemitem : list) {
String name = item.getFieldName();
if(item.isFormField()) {//判斷是否爲文件
String value = item.getString();
req.setAttribute(name,value);
System.out.println(name+ "=" + value);
} else{//如果上傳的是文件
String value = item.getName();
int start = value.lastIndexOf("\\");
StringfileName = value.substring(start + 1);
req.setAttribute(name,fileName);
// item.write(newFile(path,fileName));
OutputStream os = new FileOutputStream(new File(path,fileName));
InputStream is = item.getInputStream();
byte[ ]buffer = new byte[400];
in tlength = 0;
while((length= is.read(buffer)) != -1){
os.write(buffer,0,length);
}
is.close();
os.close();
}
}
} catch (Exceptione) {
e.printStackTrace();
}
req.getRequestDispatcher("fileUploadResult.jsp").forward(req,resp);
}
c) 文件上傳的結果頁面。
username:${requestScope.username }<br/>
file1:${requestScope.file }<br/>
file2:${requestScope.file2 }