<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫故知新:struts2_05其他功能:文件上傳

    不得不說,struts2的文件上傳功能做的實在是太方便了,如果脫離struts2的文件上傳功能,單純使用servlet結合fileUpload工具包,1k1k的讀,1k1k的寫,那么struts2的文件上傳功能,簡直是把代碼量縮減的不止一點半點。
    首先,文件上傳的表單必須是以下設置
    1 <form action="XXX" method="post" enctype="multipart/form-data">
    設置完畢之后,看一下servlet的post的方法的設置
     1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     2         
     3         request.setCharacterEncoding("utf-8");
     4         
     5         // 首先需要確認,到底是不是文件上傳的請求,
     6         boolean isMultipart = ServletFileUpload.isMultipartContent(request);
     7         
     8         if (isMultipart) {
     9             // 創建一個文件處理對象
    10             ServletFileUpload upload = new ServletFileUpload();
    11             InputStream is = null;
    12             FileOutputStream os = null;
    13             try {
    14                 // 解析請求中的所有元素
    15                 FileItemIterator iter = upload.getItemIterator(request);
    16                 while (iter.hasNext()) {
    17                     FileItemStream item = iter.next();
    18                     is = item.openStream();
    19                     //是否是表單域
    20                     if (item.isFormField()) {
    21                         //其他操作,保存參數等
    22                     } else {
    23                         //不是表單域則保存文件
    24                         String path = request.getSession().getServletContext().getRealPath("/");
    25                         path = path + "/upload/" + item.getName();
    26                         os = new FileOutputStream(path);
    27                         //流讀寫
    28                         byte[] buf = new byte[1024];
    29                         while(is.read(buf)>0){
    30                             os.write(buf);
    31                         }
    32                     }
    33 
    34                 }
    35             } catch (FileUploadException e) {
    36                 e.printStackTrace();
    37             } finally{
    38                 if (is != null) {
    39                     is.close();
    40                 }
    41                 if (os != null) {
    42                     os.close();
    43                 }
    44             }
    45         }
    46     }
    洋洋灑灑一大堆,struts2封裝了這些通用的處理,我們可以按照struts2的風格來獲取要上傳文件的對象,直接寫一個多文件上傳的例子吧
     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>文件上傳</title>
     8 </head>
     9 <body>
    10     <form action="FileUpload" method="post" enctype="multipart/form-data">
    11         文件上傳測試:<br>
    12         <input type="file" name="text"/><br>
    13         <input type="file" name="text"/><br>
    14         <input type="file" name="text"/><br>
    15         <input type="submit" value="提交">
    16     </form>
    17 </body>
    18 </html>
    action為
     1 package demo.fileUpload;
     2 
     3 import java.io.File;
     4 import java.io.IOException;
     5 
     6 import org.apache.commons.io.FileUtils;
     7 import org.apache.struts2.ServletActionContext;
     8 
     9 public class FileUpload {
    10     
    11     //文件接收數組如果是單文件上傳,那就不需要定義數組了,定義單個文件對象就行
    12     private File text[];
    13     //對應的文件名,這里的文件名是“名字.后綴”的形式,這個屬性的命名需要是“文件屬性的名字”+FileName。
    14     private String[] textFileName;
    15     //對應的文件類型,是文件的真實類型,比如“text/plain”這個屬性的命名需要是“文件屬性的名字”+ContentType
    16     private String[] textContentType;
    17 
    18     public String execute() throws IOException{
    19         
    20         String dir = "";
    21         File file = null;
    22         
    23         for (int i = 0; i < text.length; i++) {
    24             //創建要新建的文件位置
    25             dir = ServletActionContext.getServletContext().getRealPath("/"+  "/upload/" + textFileName[i];
    26             file = new File(dir);
    27             //保存文件
    28             if (!file.exists()) {
    29                 //使用common.io工具包保存文件
    30                 FileUtils.copyFile(text[i], file);
    31             }
    32         }
    33         
    34         return "success";
    35     }
    36
    37}

    posted on 2014-11-01 22:10 都較瘦 閱讀(137) 評論(0)  編輯  收藏 所屬分類: MVCFramework

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    博客定位:囿于目前的水平,博客定位在記錄自己的學習心得和隨手的練習

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲A∨无码无在线观看| 亚洲永久在线观看| 2021在线永久免费视频| 亚洲一欧洲中文字幕在线| 国产无遮挡吃胸膜奶免费看视频 | 色拍自拍亚洲综合图区| 免费无码又黄又爽又刺激| 免费无码午夜福利片69| 水蜜桃亚洲一二三四在线| 在线观看成人免费视频| 大地资源中文在线观看免费版| 亚洲人成激情在线播放| 亚洲日本中文字幕天堂网| 国产成人免费在线| 一个人看的www免费在线视频| 亚洲精品成人久久| 国产亚洲人成网站在线观看| 成人A级毛片免费观看AV网站| 中国videos性高清免费| 精品韩国亚洲av无码不卡区| 亚洲一区二区三区高清| 亚洲 国产 图片| 在线观看的免费网站| 国产午夜无码片免费| www亚洲精品久久久乳| 亚洲一区二区中文| 亚洲一级特黄大片在线观看 | 亚洲AV无码专区国产乱码电影| 久久精品视频亚洲| 永久免费av无码网站大全| 亚洲国产精品免费在线观看| jyzzjyzz国产免费观看| 亚洲AV香蕉一区区二区三区| 亚洲精品国产电影午夜| 国产精品亚洲аv无码播放| 国产午夜无码视频免费网站| 无人在线观看完整免费版视频| 无码人妻精品中文字幕免费 | 亚洲国产夜色在线观看| 亚洲s色大片在线观看| 精品国产亚洲一区二区在线观看 |