資源簡介
ajax異步文件上傳,servlet處理

代碼片段和文件信息
package?upload;
import?java.io.File;
import?java.io.IOException;
import?java.io.PrintWriter;
import?java.util.Date;
import?java.util.List;
import?javax.servlet.ServletConfig;
import?javax.servlet.ServletContext;
import?javax.servlet.ServletException;
import?javax.servlet.http.HttpServlet;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;
import?org.apache.commons.fileupload.FileItem;
import?org.apache.commons.fileupload.FileUploadException;
import?org.apache.commons.fileupload.disk.DiskFileItemFactory;
import?org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
?*?
?*?文件上傳?具體步驟:?1)獲得磁盤文件條目工廠?DiskFileItemFactory?要導包?2)?利用?request?獲取?真實路徑
?*?,供臨時文件存儲,和?最終文件存儲?,這兩個存儲位置可不同,也可相同?3)對?DiskFileItemFactory?對象設置一些?屬性
?*?4)高水平的API文件上傳處理?ServletFileUpload?upload?=?new?ServletFileUpload(factory);
?*?目的是調用?parseRequest(request)方法?獲得?FileItem?集合list?,
?*?
?*?5)在?FileItem?對象中?獲取信息,?遍歷,?判斷?表單提交過來的信息?是否是?普通文本信息?另做處理?6)?第一種.?用第三方?提供的
?*?item.write(?new?File(pathfilename)?);?直接寫到磁盤上?第二種.?手動處理
?*?
?*/
public?class?UploadProcessorServlet?extends?HttpServlet?{
private?static?final?long?serialVersionUID?=?1L;
//?保存文件的目錄
private?static?String?PATH_FOLDER?=?“/“;
//?存放臨時文件的目錄
private?static?String?TEMP_FOLDER?=?“/“;
@Override
public?void?init(ServletConfig?config)?throws?ServletException?{
ServletContext?servletCtx?=?config.getServletContext();
//?初始化路徑
//?保存文件的目錄
PATH_FOLDER?=?servletCtx.getRealPath(“/upload“);
//?存放臨時文件的目錄存放xxx.tmp文件的目錄
TEMP_FOLDER?=?servletCtx.getRealPath(“/uploadTemp“);
}
/**
?*?@see?HttpServlet#doGet(HttpServletRequest?request?HttpServletResponse
?*??????response)
?*/
protected?void?doGet(HttpServletRequest?request
HttpServletResponse?response)?throws?ServletException?IOException?{
request.setCharacterEncoding(“utf-8“);?//?設置編碼
response.setCharacterEncoding(“utf-8“);
response.setContentType(“text/html;charset=UTF-8“);
//?獲得磁盤文件條目工廠
DiskFileItemFactory?factory?=?new?DiskFileItemFactory();
//?如果沒以下兩行設置的話,上傳大的?文件?會占用?很多內存,
//?設置暫時存放的?存儲室??這個存儲室,可以和?最終存儲文件?的目錄不同
/**
?*?原理?它是先存到?暫時存儲室,然后在真正寫到?對應目錄的硬盤上,?按理來說?當上傳一個文件時,其實是上傳了兩份,第一個是以?.tem
?*?格式的?然后再將其真正寫到?對應目錄的硬盤上
?*/
factory.setRepository(new?File(TEMP_FOLDER));
//?設置?緩存的大小,當上傳文件的容量超過該緩存時,直接放到?暫時存儲室
factory.setSizeThreshold(1024?*?1024);
//?高水平的API文件上傳處理
ServletFileUpload?upload?=?new?ServletFileUpload(factory);
try?{
//?提交上來的信息都在這個list里面
//?這意味著可以上傳多個文件
//?請自行組織代碼
List?list?=?upload.parseRequest(request);
//?獲取上傳的文件
FileItem?item?=?getUploadFileItem(list);
//?獲取文件名
String?filename?=?getUploadFileName(item);
//?保存后的文件名
String?saveName?=?new?Date().getTime()?+?filename.substring(filename.lastIndexOf(“.“));
//?保存后圖片的瀏覽器訪問路徑
String?picUrl?=?request.getScheme()+“://“+request.getServerName()+“:“+request.getServerPort()+request.getContextPath()+“/uploa
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-07-06?08:20??ajaxFileUpload\
?????文件?????????850??2016-07-06?08:20??ajaxFileUpload\.classpath
?????文件????????1339??2016-07-06?08:23??ajaxFileUpload\.project
?????目錄???????????0??2016-07-06?08:23??ajaxFileUpload\.settings\
?????文件?????????522??2016-07-06?08:20??ajaxFileUpload\.settings\.jsdtscope
?????文件??????????90??2016-07-06?08:23??ajaxFileUpload\.settings\com.genuitec.eclipse.core.prefs
?????文件??????????57??2016-07-06?08:22??ajaxFileUpload\.settings\org.eclipse.core.resources.prefs
?????文件?????????364??2016-07-06?08:20??ajaxFileUpload\.settings\org.eclipse.jdt.core.prefs
?????文件?????????501??2016-07-06?08:20??ajaxFileUpload\.settings\org.eclipse.wst.common.component
?????文件?????????345??2016-07-06?08:20??ajaxFileUpload\.settings\org.eclipse.wst.common.project.facet.core.xm
?????文件??????????49??2016-07-06?08:20??ajaxFileUpload\.settings\org.eclipse.wst.jsdt.ui.superType.container
?????文件???????????6??2016-07-06?08:20??ajaxFileUpload\.settings\org.eclipse.wst.jsdt.ui.superType.name
?????目錄???????????0??2016-07-06?08:20??ajaxFileUpload\src\
?????目錄???????????0??2016-07-06?08:20??ajaxFileUpload\src\upload\
?????文件????????5388??2016-07-06?08:20??ajaxFileUpload\src\upload\UploadProcessorServlet.java
?????目錄???????????0??2016-07-06?08:22??ajaxFileUpload\WebRoot\
?????文件????????8568??2016-07-06?08:22??ajaxFileUpload\WebRoot\ajaxfileupload.js
?????文件????????1159??2016-07-06?08:22??ajaxFileUpload\WebRoot\ajaxFileUpload.jsp
?????文件???????25773??2016-07-06?08:22??ajaxFileUpload\WebRoot\ajaxupload.js
?????文件????????1263??2016-07-06?08:22??ajaxFileUpload\WebRoot\ajaxupload.jsp
?????文件?????????508??2016-07-06?08:22??ajaxFileUpload\WebRoot\index.jsp
?????文件???????93871??2016-07-06?08:22??ajaxFileUpload\WebRoot\jquery.js
?????文件????????4204??2016-07-06?08:22??ajaxFileUpload\WebRoot\loading.gif
?????目錄???????????0??2016-07-06?08:20??ajaxFileUpload\WebRoot\me
?????文件??????????39??2016-07-06?08:20??ajaxFileUpload\WebRoot\me
?????目錄???????????0??2016-07-06?08:21??ajaxFileUpload\WebRoot\upload\
?????目錄???????????0??2016-07-06?08:21??ajaxFileUpload\WebRoot\uploadTemp\
?????目錄???????????0??2016-07-06?08:20??ajaxFileUpload\WebRoot\WEB-INF\
?????文件???????????9??2016-07-06?08:20??ajaxFileUpload\WebRoot\WEB-INF\.gitignore
?????目錄???????????0??2016-07-06?08:21??ajaxFileUpload\WebRoot\WEB-INF\classes\
?????目錄???????????0??2016-07-06?08:21??ajaxFileUpload\WebRoot\WEB-INF\classes\upload\
............此處省略5個文件信息
- 上一篇:arcgis地質災害符號圖例
- 下一篇:單片機串口通信程序.rar
評論
共有 條評論