-
新建一個jsp上傳頁面uoloadFile.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":" +request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>實現文件上傳到服務器</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
out.print(path+"<br/>");
out.print(basePath+"<br/>");
%>
<form action="doFileUpload.jsp" method="post" enctype="multipart/form-data">
文件:<input type="file" name="chooseFile"/></br>
姓名:<input type="text" name="userName"/></br>
<input type="submit" value="提交">
</form>
</body>
</html>
-
然後新建一個用於處理上傳語句的jsp頁面: doFileUpload.sjp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.FileItemFactory"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.io.File"%>
<%
//先判斷是否是文件上傳類型enctype="multipart/form-data"
boolean isFileUpload = ServletFileUpload.isMultipartContent(request);
//如果是文件上傳類型
if(isFileUpload){
//得到文件上傳工廠
FileItemFactory factory = new DiskFileItemFactory();
//處理文件上傳核心類
ServletFileUpload fileUpload = new ServletFileUpload(factory);
//設置文件上傳類的編碼格式
fileUpload.setHeaderEncoding("UTF-8");
// 集合數據 : FileItem對象 注意: 每一個表單域 對應一個 FileItem對象(封裝)
List<FileItem> fileItemList = fileUpload.parseRequest(request);
//遍歷fileItemList
for(FileItem item: fileItemList){
//如果這個文本域是文件類型的
if(!item.isFormField()){
//得到文本域的value值,即 路徑+文件名
String value = item.getName();
out.print("得到文本域的value值,即 路徑+文件名:"+value+"<br/>");//------------------
//得到文件名
String fileName = value.substring(value.lastIndexOf("\\")+1);
out.print("得到文件名:"+fileName+"<br/>");//------------------
//得到上傳的文件類型
//String fileType = fileName.substring(fileName.lastIndexOf("."));
//給文件重新命名 日期+文件名
fileName = new Date().getTime() + fileName;
out.print("給文件重新命名 日期+文件名:"+fileName+"<br/>");//------------------
//得到服務器的根路徑
String rootPath = request.getRealPath("/");
out.print("得到服務器的根路徑:"+rootPath+"<br/>");//--------------------
//指定文件存放路徑
//String realPath = rootPath+"/"+"upload";
String realPath="G:/MyWork/workspace/CZX/WebContent";
out.print("指定文件存放路徑:"+realPath+"<br/>");//-------------------------
//定義文件存放的目錄,注意 目錄也是文件
File file = new File(realPath);
//如果目錄不存在
if(!file.isDirectory()){
//創建文件上傳目錄
file.mkdirs();
}
File newFile = new File(realPath+"/"+fileName);
//向newFile文件中寫入數據
item.write(newFile);
}else {//如果不是文件上傳的文本域,把輸入的內容顯示在頁面上
out.print("name=" + new String(
item.getFieldName().getBytes("ISO-8859-1"),"utf-8")
+",value="+ new String(
item.getString().getBytes("ISO-8859-1"),"utf-8"));
}
}
}
%>