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

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

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

    用JSP實現上傳文件的兩種方法

    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, 08192)) != -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 2013-01-22 17:27 youngturk 閱讀(760) 評論(0)  編輯  收藏 所屬分類: JSP隨筆Java基礎struts2

    <2013年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    公告

    this year :
    1 jQuery
    2 freemarker
    3 框架結構
    4 口語英語

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    EJB學習

    Flex學習

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产午夜亚洲精品午夜鲁丝片| 亚洲精品无码Av人在线观看国产| 色多多A级毛片免费看| 国产偷v国产偷v亚洲高清| AV大片在线无码永久免费| **毛片免费观看久久精品| 77777亚洲午夜久久多喷| 免费午夜爽爽爽WWW视频十八禁| a毛片久久免费观看| 亚洲免费福利视频| 久久国产成人精品国产成人亚洲| 18级成人毛片免费观看| 特级毛片全部免费播放| 亚洲综合久久1区2区3区| 婷婷亚洲天堂影院| 免费精品国产日韩热久久| jizz免费观看| 亚洲第一街区偷拍街拍| 亚洲国产日韩一区高清在线| 免费又黄又爽又猛的毛片 | 亚洲色欲色欲www在线播放| 国产亚洲美女精品久久久2020| 男女免费观看在线爽爽爽视频| 国产精品成人免费观看| 亚洲日韩一中文字暮| 亚洲国产日韩一区高清在线| 亚洲精品高清在线| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 羞羞网站免费观看| 亚洲不卡中文字幕| 亚洲av色福利天堂| 亚洲无码高清在线观看| 在线观看成人免费视频| 18禁黄网站禁片免费观看不卡| 美女无遮挡拍拍拍免费视频 | 国产精品亚洲精品观看不卡| 亚洲av无码一区二区乱子伦as| 免费在线观看a级毛片| 免费黄网在线观看| 在线观看视频免费完整版| 亚洲精品视频免费在线观看|