javaweb上传文件_javaWeb中,如何通过CommonsFileUpload组件上传文件
大家好,歡迎來到雄雄的小課堂,今天給大家分享的是《javaWeb中,如何通過Commons-FileUpload組件上傳文件》
前言:文件上傳大家都不陌生,在這個互聯(lián)網(wǎng)飛速發(fā)展的時代,共享資源已經(jīng)是常態(tài)了,用戶將自己計算機(jī)中的文件上傳至服務(wù)器端供別人下載、瀏覽,已經(jīng)是web項目中最常用的功能了。比如在QQ空間中我們上傳的照片,在博客中我們上傳的工具插件,均離不開文件上傳,那么,今天我們就來看看,javaweb中,是如何實現(xiàn)文件上傳的?
01
Commons-FileUpload
使用比較簡單,可以直接嵌套在jsp文件中,并且不需要編寫很多的代碼即可完成文件的上傳。除了可以上傳文件以外,還能控制上傳文件的類型以及大小,可以說是即實用又方便。
02
Commons-FileUpload上傳文件的步驟
給表單中添加屬性,enctype="multipart/form-data",并且表單的提交方式一定是post,不可以是get。
頁面借助file表單來選擇上傳的文件。
在JSP文件中使用 page指令導(dǎo)入Cormons Filel ploaod組件所需的類。
判斷請求信息中的內(nèi)容是否是multipart 類型,如果是則進(jìn)行處理。
通過 FileltemnFactory工廠對象實例化ServletFil lpload對象。
調(diào)用 ServletFileUpload對象的parseRequest(?)將表單中字段解析成Fileltem對象的集合。
通過迭代依次處理每個Fileltem 對象,如果是普通字段,通過getSring(?)方法得到相應(yīng)表?單字符的值,該值與表單字段中的^name"?屬性對應(yīng)。如果是文件字段,則通過File的構(gòu)造方法構(gòu)建一個指定路徑名和文件名的文件,并通過Flele對象的wie)方法將上傳文件的內(nèi)容保存到文件中。?
03
示例代碼
頁面fileUpload.jsp的代碼:
????文件上傳:
????"doFile.jsp"?method="post"?enctype="multipart/form-data"?>
??????姓名:<input?type="text"?name="name"/>
??????文件:<input?type="file"?name="fname"/>
??????<input?type="submit"?value="上傳"/>
處理業(yè)務(wù)doFile.jsp的代碼:
"java.io.File"%>"org.apache.commons.fileupload.FileItem"%>
"org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
"org.apache.commons.fileupload.FileItemFactory"%>
"org.apache.commons.fileupload.servlet.ServletFileUpload"%>
"java"?import="java.util.*"?pageEncoding="UTF-8"%>
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
span style="color: rgb(152, 195, 121);background: rgba(0, 0, 0, 0);display: inline;width: 262px;text-decoration: none solid rgb(152, 195, 121);font-weight: 400;font-style: normal;">"-//W3C//DTD HTML 4.01 Transitional//EN">
??
????<base?href="">
????
????My JSP 'doFile.jsp'?starting page
????
??"pragma"?content="no-cache">
??"cache-control"?content="no-cache">
??"expires"?content="0">
??"keywords"?content="keyword1,keyword2,keyword3">
??"description"?content="This is my page">
??
??
??
??
??????????????request.setCharacterEncoding("utf-8");
????????String uploadName = ""; //上傳的文件名
????????String fileName = ""; //表單里面name的值
????????//請求信息中是否是multipart類型
????????boolean isMultipart = ServletFileUpload.isMultipartContent(request);
????????//上傳文件的存儲路徑
????????String uploadPath = request.getSession().getServletContext().getRealPath("upload/");
????????if(isMultipart){
??????????FileItemFactory factory = new?DiskFileItemFactory();
??????????ServletFileUpload upload = new?ServletFileUpload(factory);
??????????//解析所有的form表單里面的文件
??????????List items = upload.parseRequest(request);
??????????Iterator iter = items.iterator();while(iter.hasNext()){ //一次處理每個文件
????????????FileItem item = (FileItem)iter.next();if(item.isFormField()){ //普通表單
??????????????fileName = item.getFieldName(); //表單字段的name屬性值if(fileName.equals("name")){out.print(item.getString("utf-8")+"上傳了文件
");
??????????????}
????????????}else{//文件表單
??????????????String fName = item.getName();if(fName!=null&&!fName.equals("")){
????????????????File fullFile = new?File(item.getName());
????????????????File saveFile = new?File(uploadPath,fullFile.getName());
????????????????item.write(saveFile);
????????????????uploadName= fullFile.getName();out.print("上傳成功之后的文件名是:"+uploadName);
??????????????}
????????????}
??????????}
????????}
???????%>
運(yùn)行結(jié)果如下:
往期精彩多功能語音播放器
2020-11-21
CSS動畫示例(上一篇是CSS過渡…)
2020-11-20
CSS3中的動畫示例
2020-11-19
CSS3的幾個變形案例……
2020-11-18
jsp中使用cookie時報錯……
2020-11-17
Java中的TreeSet集合會自動將元素升序排序
2020-11-16
點(diǎn)分享點(diǎn)點(diǎn)贊點(diǎn)在看總結(jié)
以上是生活随笔為你收集整理的javaweb上传文件_javaWeb中,如何通过CommonsFileUpload组件上传文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse问题_Alt+/不给提示,
- 下一篇: The Model Driven Sof