<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

    導航

    統計

    公告

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

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV成人影视在线观看| 又粗又长又爽又长黄免费视频| 免费大片黄手机在线观看| 在线观看片免费人成视频无码| 精品亚洲成A人无码成A在线观看| 国产一区二区三区免费看 | 永久在线观看www免费视频| 亚洲国产精品美女久久久久| 亚洲真人无码永久在线| 91嫩草免费国产永久入口| 黄色a三级三级三级免费看| 亚洲电影一区二区| 国产在线19禁免费观看国产| 久久久久免费看黄a级试看| 亚洲AV无码之国产精品| 久久亚洲精品成人av无码网站| 最新69国产成人精品免费视频动漫 | 一区二区三区免费在线视频| 4480yy私人影院亚洲| 免费乱理伦在线播放| 最近最新高清免费中文字幕| 国产亚洲精品仙踪林在线播放| 亚洲丝袜美腿视频| 亚洲伦乱亚洲h视频| 在线免费一区二区| 亚洲w码欧洲s码免费| 久久www免费人成精品香蕉| 亚洲色中文字幕在线播放| 亚洲欧洲免费视频| 精品亚洲成α人无码成α在线观看| www.999精品视频观看免费| 久操视频免费观看| 手机永久免费的AV在线电影网| 亚洲av永久综合在线观看尤物| 亚洲国产精品无码一线岛国| 全部免费毛片在线| 成人免费福利电影| 免费在线视频你懂的| 日本视频免费高清一本18| 产传媒61国产免费| 国产成人亚洲毛片|