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

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

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

    每日一得

    不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
    最近關心的內容:SSH,seam,flex,敏捷,TDD
    本站的官方站點是:顛覆軟件

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
    key words: 文件上傳,upload, cos.jar + uploadbean.jar + filemover.jar

    以前用cos作文件上傳,但是對于文件上傳后的改名還需要借助其他的工具。

    摘錄如下:


    在用Java開發企業器系統的使用,特別是涉及到與辦公相關的軟件開發的時候,文件的上傳是客戶經常要提到的要求.因此有 一套很好文件上傳的解決辦法也能方便大家在這一塊的開發.

    首先申明,該文章是為了自己記錄一備以后開發需要的時候,不用手忙腳亂哈哈........

    現在在國內用的非常多的一般是兩種方法解決來解決文件上傳.

    cos.jar + uploadbean.jar + filemover.jar
    這個是用的非常普遍的,原因是因為他操作方便,是我們不必再去關注,那些文件的輸入和輸出流,使我們從底層的流中解脫出來.
    UploadFile,UploadBean,MultipartFormDataRequest

    <%@?page?contentType="text/html;charset=gb2312"?%>
    <head>
    <title>fbysss?UploadBean?示例</title>
    <!--meta?http-equiv="Content-Type"?content="text/html;?charset=iso-8859-1"-->
    <!--meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312"-->
    </head>
    <FORM?name="form1"?METHOD="POST"?ACTION="sssupload.jsp"?ENCTYPE="multipart/form-data">
    <input?name="title"?type=?"text"?value="中文字">
    <td?class="bodystyle">附件</td>
    <td?class="bodystyle">?<input?name="attach"?type="FILE"?id="attach"?size="50"?>?</td>
    <input?name="ok"?type=?"submit"?value="提交">
    </form>

    2.讀取表單頁面sssgetdata.jsp

    <!--
    //==========================================================================
    //文件:UploadBean上傳實例
    //功能:解決中文亂碼,完成文件上傳,并提供上傳改名解決方案
    //作者:fbysss
    //msn:jameslastchina@hotmail.com
    //==========================================================================
    -->
    <%@?page?contentType="text/html;charset=GBK"?%>
    <%@?page?language="java"?import="com.jspsmart.upload.*">
    <%@?page?import="java.text.SimpleDateFormat">
    <%@?page?import="java.io.File">
    <%@?page?import="java.util.*">
    <%@?page?import="javazoom.upload.*">
    <%@?page?import="uploadutilities.FileMover">
    <head>
    <meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312">
    </head>
    <%?
    request
    .setCharacterEncoding("GBK");//設置編碼格式,就不用一個個轉碼了。
    FileMover?fileMover?
    =?new?FileMover();//你也可以使用自帶的實例中jsp:useBean的形式。
    UploadBean?upBean?
    =?new?UploadBean();
    MultipartFormDataRequest?mrequest?
    =?null;
    Hashtable?files?=?null;

    if?(MultipartFormDataRequest.isMultipartFormData(request))
    {
    mrequest?
    =?new?MultipartFormDataRequest(request,null,100*1024*1024,MultipartFormDataRequest.COSPARSER,"GBK");//注意這里也要設置編碼參數
    String?sTt0?
    =?mrequest.getParameter("title");
    out.println("<br>Title0是:"+sTt0+"<br>");
    String?sTt1?=?new?String(sTt0.getBytes("ISO-8859-1"),"GBK");
    out.println("
    <br>Title1是:"+sTt1+"<br>");
    //這里用來測試title參數是否正確。調試的時候,加一句if?(true)return;即可。
    files?=?mrequest.getFiles();
    }


    //獲取修改前的文件名
    String?sOldFileName?=mrequest.getParameter("oldfilename");?
    out.println("sOldFileName:"+sOldFileName);
    String?sWebRootPath?=?request.getRealPath("/");//得到你的web應用的根。
    String?sPath=sWebRootPath+"attach";
    int?iFileCount?=?0;
    String?sServerFileName="";
    String?sLocalFileName?=?"";
    //文件獲取
    if?(?(files?!=?null)?||?(!files.isEmpty())?)?{

    iFileCount?=?files.size();
    UploadFile?file?=?(UploadFile)?files.get("attach");
    sLocalFileName=file.getFileName();
    out.println("sLocalFileName:"+sLocalFileName);
    int?ii=?sLocalFileName.indexOf(".");?//取文件名的后綴
    String?sExt?=?sLocalFileName.substring(ii,sLocalFileName.length());
    //得到不重復的文件名
    java.util.Date?dt?=?new?java.util.Date(System.currentTimeMillis());
    SimpleDateFormat?fmt?=?new?SimpleDateFormat("yyyyMMddHHmmssSSS");
    sServerFileName=?fmt.format(dt);
    sServerFileName?=sServerFileName?+?sExt;
    //如果不存在該目錄,則新建一個
    File?dir?=new?File(sPath);
    if?(!dir.exists()){
    dir.mkdirs();
    }
    upBean.setFolderstore(sPath);//設置要上傳的目錄
    upBean.addUploadListener(fileMover);//增加filMover監聽
    fileMover.setNewfilename(sServerFileName);//設置服務器上的文件名
    upBean.store(mrequest,?"attach");//上傳
    out.println("file?path?is?"+sPath+"/"+sServerFileName);
    }

    %>


    Demo注意事項:cos.jar,uploadbean.jar,filemover.jar這幾個包必須有。
    必備下載地址:
    UploadBean1.5:http://wcarchive.cdrom.com/pub/simtelnet/winnt/java/uploadbean1_5.zip
    FileMover1.3:http://www.javazoom.net/jzservlets/uploadbean/addons/filemover1.3.zip
    參考下載地址:
    ChinesUpload例子:http://www.javazoom.net/jzservlets/uploadbean/addons/ChineseUpload.zip
    參考了fbysss的一篇文章
    2. org.apache.struts.upload.FormFile
    Struts1.1的org.apache.struts.upload.FormFile類。很方便,不用自己寫。也不用寫一個jsp調用jspsmartupload就可以搞定。


    選擇上傳文件頁面:selfile.jsp


    --------------------------------------------------------------------------------
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
    <html:html>
    <html:form action="/uploadsAction.do" enctype="multipart/form-data">
    <html:file property="theFile"/>
    <html:submit/>
    </html:form>
    </html:html>

    --------------------------------------------------------------------------------
    UpLoadAction.java
    --------------------------------------------------------------------------------
    import?java.io.*;
    import?javax.servlet.http.*;
    import?org.apache.struts.action.*;
    import?org.apache.struts.upload.FormFile;

    /**
    *?<p>Title:UpLoadAction</p>
    *?<p>Description:?QRRSMMS?</p>
    *?<p>Copyright:?Copyright?(c)?2004?jiahansoft</p>
    *?<p>Company:?jiahansoft</p>
    *?
    @author?wanghw
    *?
    @version?1.0
    */


    public?class?UpLoadAction?extends?Action?{
    public?ActionForward?execute(ActionMapping?mapping,
    ActionForm?form,
    HttpServletRequest?request,
    HttpServletResponse?response)
    throws?Exception?{
    if?(form?instanceof?uploadsForm)?{//如果form是uploadsForm
    String?encoding?=?request.getCharacterEncoding();
    if?((encoding?!=?null)?&&?(encoding.equalsIgnoreCase("utf-8")))
    {
    response.setContentType(
    "text/html;?charset=gb2312");//如果沒有指定編碼,編碼格式為gb2312
    }

    UpLoadForm?theForm?
    =?(UpLoadForm?)?form;
    FormFile?file?
    =?theForm.getTheFile();//取得上傳的文件
    try?{
    InputStream?stream?
    =?file.getInputStream();//把文件讀入
    String?filePath?=?request.getRealPath("/");//取當前系統路徑
    ByteArrayOutputStream?baos?=?new?ByteArrayOutputStream();
    OutputStream?bos?
    =?new?FileOutputStream(filePath?+?"/"?+
    file.getFileName());
    //建立一個上傳文件的輸出流
    //System.out.println(filePath+"/"+file.getFileName());
    int?bytesRead?=?0;
    byte[]?buffer?=?new?byte[8192];
    while?(?(bytesRead?=?stream.read(buffer,?0,?8192))?!=?-1)?{
    bos.write(buffer,?
    0,?bytesRead);//將文件寫入服務器
    }

    bos.close();
    stream.close();
    }
    catch(Exception?e){
    System.err.print(e);
    }

    //request.setAttribute("dat",file.getFileName());
    return?mapping.findForward("display");
    }

    return?null;
    }

    }



    --------------------------------------------------------------------------------

    UpLoadForm.java

    --------------------------------------------------------------------------------


    import?javax.servlet.http.HttpServletRequest;
    import?org.apache.struts.action.*;
    import?org.apache.struts.upload.*;

    /**
    *?<p>Title:UpLoadForm</p>
    *?<p>Description:?QRRSMMS?</p>
    *?<p>Copyright:?Copyright?(c)?2004?jiahansoft</p>
    *?<p>Company:?jiahansoft</p>
    *?
    @author?wanghw
    *?
    @version?1.0
    */


    public?class?UpLoadForm?extends?ActionForm?{
    public?static?final?String?ERROR_PROPERTY_MAX_LENGTH_EXCEEDED?=?"org.apache.struts.webapp.upload.MaxLengthExceeded";
    protected?FormFile?theFile;
    public?FormFile?getTheFile()?{
    return?theFile;
    }

    public?void?setTheFile(FormFile?theFile)?{
    this.theFile?=?theFile;
    }

    public?ActionErrors?validate(ActionMapping?mapping,?HttpServletRequest?request)
    {
    ActionErrors?errors?
    =?null;
    //has?the?maximum?length?been?exceeded?
    Boolean?maxLengthExceeded?=?(Boolean)
    request.getAttribute(MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED);
    if?((maxLengthExceeded?!=?null)?&&?(maxLengthExceeded.booleanValue()))
    {
    errors?
    =?new?ActionErrors();
    errors.add(ERROR_PROPERTY_MAX_LENGTH_EXCEEDED,?
    new?ActionError("maxLengthExceeded"));
    }

    return?errors;

    }

    }

    //這是相對應的form,還有其他屬性可以設置,具體可以參考struts的上傳例子。



    --------------------------------------------------------------------------------

    struts-config.xml

    --------------------------------------------------------------------------------

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd";>
    <struts-config>
    <form-beans>
    <form-bean name="uploadsForm" type="UpLoadForm" />
    </form-beans>
    <action-mappings>
    <action name="uploadsForm" type="UpLoadAction" path="/uploadsAction">
    <forward name="display" path="/display.jsp" />
    </action>
    </action-mappings>
    </struts-config>
    <!--display.jsp就是隨便寫一個成功頁-->
    posted on 2007-03-26 22:18 Alex 閱讀(36116) 評論(7)  編輯  收藏 所屬分類: web技術

    評論

    # re: [zt]用JSP實現上傳文件的兩種方法 2007-06-04 13:46 zhuwdj
    謝謝老哥!  回復  更多評論
      

    # re: [zt]用JSP實現上傳文件的兩種方法[未登錄] 2007-06-04 13:48 nancy
    form instanceof uploadsForm
    應為
    form instanceof UpLoadForm
    那就完美了!  回復  更多評論
      

    # re: [zt]用JSP實現上傳文件的兩種方法[未登錄] 2011-11-10 20:05
    老哥,我是出學Jsp,能不能以后常向你請教?我的QQ 624987420  回復  更多評論
      

    # re: [zt]用JSP實現上傳文件的兩種方法 2012-06-11 13:01 dfdf
    dfsfsdfdsfsdfsd  回復  更多評論
      

    # re: [zt]用JSP實現上傳文件的兩種方法 2012-11-23 09:24 有課
    為什么我使用第一種方法,在mrequest = new MultipartFormDataRequest。。。處報錯了  回復  更多評論
      

    # re: [zt]用JSP實現上傳文件的兩種方法 2013-03-08 14:11 對方是否收費
    斯蒂芬斯蒂芬  回復  更多評論
      

    # re: [zt]用JSP實現上傳文件的兩種方法 2014-09-23 18:19 lennosay
    天啊,這種工具類不要自己寫,請用權威的 Apache Commons FileUpload
    官網網站:http://commons.apache.org/ (因為頁面不斷更新,所以請自己進入找)  回復  更多評論
      

    主站蜘蛛池模板: 免费a在线观看播放| 国产黄色片在线免费观看| 亚洲熟妇av一区二区三区| 看亚洲a级一级毛片| 国产男女猛烈无遮挡免费视频| 亚洲国产成人无码AV在线影院 | a毛片成人免费全部播放| 四只虎免费永久观看| 日韩久久无码免费毛片软件| 亚洲精品无码久久久| 国产无遮挡色视频免费观看性色| 精品亚洲一区二区三区在线观看 | 国产精品免费综合一区视频| 色偷偷亚洲男人天堂| 亚洲成a人片在线观看老师| 一区二区三区在线免费观看视频 | 无人在线观看免费高清视频| 精品亚洲456在线播放| 国产免费牲交视频| 午夜免费国产体验区免费的| 亚洲午夜未满十八勿入网站2| 久久国产乱子免费精品| 亚洲精品视频在线免费| 毛片免费全部免费观看| 亚洲精品成a人在线观看夫| 亚洲人成网站在线观看青青| 久久精品成人免费网站| 亚洲91精品麻豆国产系列在线| 日韩激情淫片免费看| 三年在线观看免费观看完整版中文| 久久精品亚洲综合一品| 7723日本高清完整版免费| 国产成人精品亚洲| 久久精品国产亚洲麻豆| 欧洲精品成人免费视频在线观看| 亚洲精品欧美综合四区| 国产成人A人亚洲精品无码| 亚洲精品自在在线观看| **实干一级毛片aa免费| 亚洲电影在线免费观看| 成人最新午夜免费视频|