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

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

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

    用JSP實現(xiàn)上傳文件的兩種方法

    key words: 文件上傳,upload, cos.jar + uploadbean.jar + filemover.jar

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

    摘錄如下:


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

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

    現(xiàn)在在國內(nèi)用的非常多的一般是兩種方法解決來解決文件上傳.

    cos.jar + uploadbean.jar + filemover.jar
    這個是用的非常普遍的,原因是因為他操作方便,是我們不必再去關(guān)注,那些文件的輸入和輸出流,使我們從底層的流中解脫出來.
    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");//設(shè)置編碼格式,就不用一個個轉(zhuǎn)碼了。
    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");//注意這里也要設(shè)置編碼參數(shù)
    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參數(shù)是否正確。調(diào)試的時候,加一句if (true)return;即可。
    files = mrequest.getFiles();
    }


    //獲取修改前的文件名
    String sOldFileName =mrequest.getParameter("oldfilename"); 
    out.println("sOldFileName:"+sOldFileName);
    String sWebRootPath = request.getRealPath("/");//得到你的web應(yīng)用的根。
    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());
    //得到不重復(fù)的文件名
    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);//設(shè)置要上傳的目錄
    upBean.addUploadListener(fileMover);//增加filMover監(jiān)聽
    fileMover.setNewfilename(sServerFileName);//設(shè)置服務(wù)器上的文件名
    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調(diào)用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("/");//取當(dāng)前系統(tǒng)路徑
    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);//將文件寫入服務(wù)器

    }

    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;

    }

    }

    //這是相對應(yīng)的form,還有其他屬性可以設(shè)置,具體可以參考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 閱讀(759) 評論(0)  編輯  收藏 所屬分類: JSP隨筆 、Java基礎(chǔ)struts2

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

    導(dǎo)航

    統(tǒng)計

    公告

    this year :
    1 jQuery
    2 freemarker
    3 框架結(jié)構(gòu)
    4 口語英語

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    EJB學(xué)習(xí)

    Flex學(xué)習(xí)

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久精品免费观看| 无码国产精品一区二区免费vr| 久久久久成人精品免费播放动漫| 99久久免费国产精品特黄| 亚洲精品和日本精品| 亚洲视频中文字幕在线| 337p日本欧洲亚洲大胆人人| 国产成人AV片无码免费| 日本高清免费不卡视频| 亚洲日韩激情无码一区| 亚洲日韩亚洲另类激情文学| 国产在线观看无码免费视频| 成人黄软件网18免费下载成人黄18免费视频 | 成人a免费α片在线视频网站| 亚洲无线一二三四区手机| 亚洲国产av一区二区三区丶| 国产精品免费久久| 无码日韩人妻av一区免费| 日韩亚洲人成在线综合日本| 亚洲一区二区无码偷拍| 久久精品电影免费动漫| 亚洲精品无码成人片在线观看| 亚洲国产日韩在线| 国内少妇偷人精品视频免费| 国产成人高清精品免费软件| 亚洲精品一卡2卡3卡三卡四卡| 色婷婷综合缴情综免费观看| 成人免费视频网址| 久久久久亚洲AV成人片| 精品一区二区三区免费视频 | 在线观看日本免费a∨视频| 亚洲熟妇av一区二区三区| 亚洲国产精品无码久久久秋霞1| 久久久久国产免费| 亚洲伊人久久综合中文成人网| 亚洲午夜成人精品无码色欲| 三年片在线观看免费观看大全一 | 一级特黄aaa大片免费看| 美女网站免费福利视频| 久久噜噜噜久久亚洲va久| 亚欧乱色国产精品免费视频|