??xml version="1.0" encoding="utf-8" standalone="yes"?>精品亚洲一区二区三区四区五区高,91一区二区三区,欧美日本一区二区视频在线观看http://www.aygfsteel.com/sdwenfj/zh-cnFri, 16 May 2025 23:40:35 GMTFri, 16 May 2025 23:40:35 GMT60oracle中直接读写txt文ghttp://www.aygfsteel.com/sdwenfj/archive/2007/12/18/168382.html亚龙(二丙)亚龙(二丙)Tue, 18 Dec 2007 00:20:00 GMThttp://www.aygfsteel.com/sdwenfj/archive/2007/12/18/168382.htmlhttp://www.aygfsteel.com/sdwenfj/comments/168382.htmlhttp://www.aygfsteel.com/sdwenfj/archive/2007/12/18/168382.html#Feedback0http://www.aygfsteel.com/sdwenfj/comments/commentRss/168382.htmlhttp://www.aygfsteel.com/sdwenfj/services/trackbacks/168382.html先执行SQL创徏一个目?

create or replace directory TEMP_JH  as 'd:/temp';

然后写程序进行操?

DECLARE
      input_file   UTL_FILE.FILE_TYPE;
      input_buffer VARCHAR2(4000);
    BEGIN
      input_file := UTL_FILE.FOPEN(
                    'TEMP_JH', 'a.txt', 'w');
      --LOOP
        --UTL_FILE.GET_LINE(input_file,input_buffer);
        UTL_FILE.PUT_LINE(input_file,'aaaaaaaaaaaa');
      --END LOOP;
      UTL_FILE.FCLOSE(input_file);
    EXCEPTION
      WHEN OTHERS THEN
        vls_temp:='AAA'||sqlerrm;      
       
    END;



亚龙(二丙) 2007-12-18 08:20 发表评论
]]>
d文本文ghttp://www.aygfsteel.com/sdwenfj/archive/2007/12/05/165535.html亚龙(二丙)亚龙(二丙)Wed, 05 Dec 2007 07:41:00 GMThttp://www.aygfsteel.com/sdwenfj/archive/2007/12/05/165535.htmlhttp://www.aygfsteel.com/sdwenfj/comments/165535.htmlhttp://www.aygfsteel.com/sdwenfj/archive/2007/12/05/165535.html#Feedback0http://www.aygfsteel.com/sdwenfj/comments/commentRss/165535.htmlhttp://www.aygfsteel.com/sdwenfj/services/trackbacks/165535.html   File m_file = new File(filestr);
  FileReader m_fileReader = null;
  BufferedReader m_bufReader = null;
  StringTokenizer m_strTok = null;
  String m_line = "";
  String m_xm = null;
  String m_sfzh = null;
  
  if(m_file.isFile()){   
   try {
    m_fileReader = new FileReader(m_file);
    m_bufReader = new BufferedReader(m_fileReader);
   } catch (FileNotFoundException e) {
    e.printStackTrace();
    return "不存在此文g!";    
   }
   do {
    m_line = m_bufReader.readLine();
    if(m_line == null){break;}
    m_strTok = new StringTokenizer(m_line,"|");
    //int m_n = m_strTok.countTokens();
    while(m_strTok.hasMoreTokens()){
     m_xm = m_strTok.nextToken();
     m_sfzh = m_strTok.nextToken();     
     System.out.println("xm---"+m_xm+"    sfzh=="+m_sfzh);
     //在此q接数据?把此人的姓名  w䆾证号写入数据库表?
    }
   }while(m_line!=null && m_line.length()>0);
  }else{
   return "不是文g!";
  }
  return "success";
 }

亚龙(二丙) 2007-12-05 15:41 发表评论
]]>
jspSmartUpload上传下蝲全攻?/title><link>http://www.aygfsteel.com/sdwenfj/archive/2007/12/05/165465.html</link><dc:creator>亚龙(二丙)</dc:creator><author>亚龙(二丙)</author><pubDate>Wed, 05 Dec 2007 05:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/sdwenfj/archive/2007/12/05/165465.html</guid><wfw:comment>http://www.aygfsteel.com/sdwenfj/comments/165465.html</wfw:comment><comments>http://www.aygfsteel.com/sdwenfj/archive/2007/12/05/165465.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/sdwenfj/comments/commentRss/165465.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/sdwenfj/services/trackbacks/165465.html</trackback:ping><description><![CDATA[<p align="center">jspSmartUpload上传下蝲全攻?转蝲)<br /> </p> <br /> <span id="wmqeeuq" class="t18"><span id="wmqeeuq" class="myp11"><font id="zoom"><strong>一、安装篇</strong> <br /> <br />   jspSmartUpload是由www.jspsmart.com|站开发的一个可免费使用的全功能的文件上?nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u4E0B_u8F7D";KeyGate_ads.ShowGgAds(this,"_u4E0B_u8F7D",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=BqIYenC1WR7DDBZai6QOi9ZzUB9KhhizS55uUBMCNtwGgnAEQARgBIIL2kgsoFDgAUM25q_n4_____wFgnbnQgZAFqgEKMjAwMDAxNzQ1NLIBD3d3dy5rbm93c2t5LmNvbcgBAdoBIGh0dHA6Ly93d3cua25vd3NreS5jb20vMzEzNi5odG1sgAIBqQKKYaAB9iOCPsgC8vC_A6gDAegDIOgD0wE&num=1&adurl=http://www.alldw.net/download/mysoftdown.htm&client=ca-pub-7244513001137299");GgKwClickStat("下蝲","www.alldw.net","afc","2000017454");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u4E0B_u8F7D"'>下蝲</strong></nobr>lgQ适于嵌入执行上传下蝲操作的JSP文g中。该lg有以下几个特点: <br /> <br /> 1、用简单。在JSP文g中仅仅书写三五行JAVA代码可以搞定文件的上传或下载,方便?<br /> <br /> 2、能全程控制上传。利用jspSmartUploadlg提供的对象及其操作方法,可以获得全部上传文g的信息(包括文g名,大小Q类型,扩展名,文g数据{)Q方便存取?<br /> <br /> 3、能对上传的文g在大、类型等斚w做出限制。如此可以o掉不W合要求的文件?<br /> <br /> 4、下载灵zR仅写两行代码,p把Web服务器变成文件服务器。不文件在Web服务器的目录下或在其它Q何目录下Q都可以利用jspSmartUploadq行下蝲?<br /> <br /> 5、能文件上传到数据库中Q也能将数据库中的数据下载下来?/strong>q种功能针对的是MYSQL数据库,因ؓ不具有通用性,所以本文不准备举例介绍q种用法?<br /> <br />   jspSmartUploadlg可以从www.jspsmart.com|站上自׃载,压羃包的名字是jspSmartUpload.zip。下载后Q用WinZip或WinRAR其解压到Tomcat的webapps目录下(本文以Tomcat服务器ؓ例进行介l)。解压后Q将webapps/jspsmartupload目录下的子目录Web-inf名字改ؓ全大写的WEB-INFQ这样一改jspSmartUploadcL能用。因为TomcatҎ件名大小写敏感,它要求Web应用E序相关的类所在目录ؓWEB-INFQ且必须是大写。接着重新启动TomcatQ这样就可以在JSP文g中用jspSmartUploadlg了?<br /> <br />   注意Q按上述Ҏ安装后,只有webapps/jspsmartupload目录下的E序可以使用jspSmartUploadlgQ如果想让Tomcat服务器的所有Web应用E序都能用它Q必d如下工作Q?<br /> <br /> 1Q进入命令行状态,目录切换到Tomcat的webapps/jspsmartupload/WEB-INF目录下?<br /> <br /> 2Q运行JAR打包命oQjar cvf jspSmartUpload.jar com <br /> <br /> Q也可以打开资源理器,切换到当前目录,用WinZipcom目录下的所有文件压~成jspSmartUpload.zipQ然后将jspSmartUpload.zip换名为jspSmartUpload.jar文g卛_。) <br /> <br /> 3Q将jspSmartUpload.jar拯到Tomcat的shared/lib目录下?<br /> <br /> <strong>二、相关类说明?/strong> <br /> <br /> <strong>?Filec?/strong> <br /> <br />   q个cd装了一个上传文件的所有信息。通过它,可以得到上传文g的文件名、文件大、扩展名、文件数据等信息?<br /> <br />   FilecM要提供以下方法: <br /> <br /> 1、saveAs作用Q将文g换名另存?<br /> <br /> <nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u539F_u578B";KeyGate_ads.ShowGgAds(this,"_u539F_u578B",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=BwAqInC1WR7DDBZai6QOi9ZzUB5GurTWZ1u-aAsCNtwGQsAoQAhgCIIL2kgsoFDgAUOOJqZIFYJ250IGQBaAB_72U-wOqAQoyMDAwMDE3NDU0sgEPd3d3Lmtub3dza3kuY29tyAEB2gEgaHR0cDovL3d3dy5rbm93c2t5LmNvbS8zMTM2Lmh0bWypAophoAH2I4I-yAK168oDqAMB6AMg6APTAQ&num=2&adurl=http://www.ni.com/labview/design/zhs&client=ca-pub-7244513001137299");GgKwClickStat("原型","www.ni.com/labview/design/zhs","afc","2000017454");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u539F_u578B"'>原型</strong></nobr>Q?<br /> <br /> public void saveAs(java.lang.String destFilePathName) <br /> <br /> ?<br /> <br /> public void saveAs(java.lang.String destFilePathName, int optionSaveAs) <br /> <br /> 其中QdestFilePathName是另存的文g名,optionSaveAs是另存的选项Q该选项有三个|分别是SAVEAS_PHYSICAL,SAVEAS_VIRTUALQSAVEAS_AUTO。SAVEAS_PHYSICAL表明?nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u64CD_u4F5C_u7CFB_u7EDF";KeyGate_ads.ShowGgAds(this,"_u64CD_u4F5C_u7CFB_u7EDF",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=BqIYenC1WR7DDBZai6QOi9ZzUB9KhhizS55uUBMCNtwGgnAEQARgBIIL2kgsoFDgAUM25q_n4_____wFgnbnQgZAFqgEKMjAwMDAxNzQ1NLIBD3d3dy5rbm93c2t5LmNvbcgBAdoBIGh0dHA6Ly93d3cua25vd3NreS5jb20vMzEzNi5odG1sgAIBqQKKYaAB9iOCPsgC8vC_A6gDAegDIOgD0wE&num=1&adurl=http://www.alldw.net/download/mysoftdown.htm&client=ca-pub-7244513001137299");GgKwClickStat("操作pȝ","www.alldw.net","afc","2000017454");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u64CD_u4F5C_u7CFB_u7EDF"'>操作pȝ</strong></nobr>的根目录为文件根目录另存文gQSAVEAS_VIRTUAL表明以Web应用E序的根目录为文件根目录另存文gQSAVEAS_AUTO则表Clg军_Q当Web应用E序的根目录存在另存文g的目录时Q它会选择SAVEAS_VIRTUALQ否则会选择SAVEAS_PHYSICAL?<br /> <br /> 例如QsaveAs("/upload/sample.zip",SAVEAS_PHYSICAL)执行后若Web服务器安装在C盘,则另存的文g名实际是c:\upload\sample.zip。而saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)执行后若Web应用E序的根目录是webapps/jspsmartuploadQ则另存的文件名实际是webapps/jspsmartupload/upload/sample.zip。saveAs("/upload/sample.zip",SAVEAS_AUTO)执行时若Web应用E序根目录下存在upload目录Q则其效果同saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)Q否则同saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)?<br /> <br /> Q对于WebE序的开发来_最好用SAVEAS_VIRTUALQ以便移植?<br /> <br /> 2、isMissing <br /> <br /> 作用Q这个方法用于判断用h否选择了文Ӟ也即对应的表单项是否有倹{选择了文件时Q它q回false。未选文件时Q它q回true?<br /> <br /> 原型Qpublic boolean isMissing() <br /> <br /> 3、getFieldName <br /> <br /> 作用Q取HTML表单中对应于此上传文件的表单的名字?<br /> <br /> 原型Qpublic String getFieldName() <br /> <br /> 4、getFileName <br /> <br /> 作用Q取文g名(不含目录信息Q?<br /> <br /> 原型Qpublic String getFileName() <br /> <br /> 5、getFilePathName <br /> <br /> 作用Q取文g全名Q带目录Q?<br /> <br /> 原型Qpublic String getFilePathName <br /> <br /> 6、getFileExt <br /> <br /> 作用Q取文g扩展名(后缀Q?<br /> <br /> 原型Qpublic String getFileExt() <br /> <br /> 7、getSize <br /> <br /> 作用Q取文g长度Q以字节计) <br /> <br /> 原型Qpublic int getSize() <br /> <br /> 8、getBinaryData <br /> <br /> 作用Q取文g数据中指定位Ud的一个字节,用于文件等处理?<br /> <br /> 原型Qpublic byte getBinaryData(int index)。其中,index表示位移Q其值在0到getSize()-1之间?<br /> <br /> <strong>?Filesc?/strong> <br /> <br />   q个c表C所有上传文件的集合Q通过它可以得C传文件的数目、大等信息。有以下ҎQ?<br /> <br /> 1、getCount <br /> <br /> 作用Q取得上传文件的数目?<br /> <br /> 原型Qpublic int getCount() <br /> <br /> 2、getFile <br /> <br /> 作用Q取得指定位Ud的文件对象FileQ这是com.jspsmart.upload.FileQ不是java.io.FileQ注意区分)?<br /> <br /> 原型Qpublic File getFile(int index)。其中,index为指定位U,其值在0到getCount()-1之间?<br /> <br /> 3、getSize <br /> <br /> 作用Q取得上传文件的总长度,可用于限制一ơ性上传的数据量大?<br /> <br /> 原型Qpublic long getSize() <br /> <br /> 4、getCollection <br /> <br /> 作用Q将所有上传文件对象以Collection的Ş式返回,以便其它应用E序引用Q浏览上传文件信息?<br /> <br /> 原型Qpublic Collection getCollection() <br /> <br /> 5、getEnumeration <br /> <br /> 作用Q将所有上传文件对象以EnumerationQ枚举)的Ş式返回,以便其它应用E序览上传文g信息?<br /> <br /> 原型Qpublic Enumeration getEnumeration() <br /> <br /> <strong>?Requestc?/strong> <br /> <br />   q个cȝ功能{同于JSP内置的对象request。只所以提供这个类Q是因ؓ对于文g上传表单Q通过request对象无法获得表单的|必须通过jspSmartUploadlg提供的Request对象来获取。该cL供如下方法: <br /> <br /> 1、getParameter <br /> <br /> 作用Q获取指定参C倹{当参数不存在时Q返回gؓnull?<br /> <br /> 原型Qpublic String getParameter(String name)。其中,name为参数的名字?<br /> <br /> 2、getParameterValues <br /> <br /> 作用Q当一个参数可以有多个值时Q用此方法来取其倹{它q回的是一个字W串数组。当参数不存在时Q返回gؓnull?<br /> <br /> 原型Qpublic String[] getParameterValues(String name)。其中,name为参数的名字?<br /> <br /> 3、getParameterNames <br /> <br /> 作用Q取得Request对象中所有参数的名字Q用于遍历所有参数。它q回的是一个枚丑֞的对象?<br /> <br /> 原型Qpublic Enumeration getParameterNames() <br /> <br /> <strong>?SmartUploadc?/strong>q个cd成上传下载工作?<br /> <br /> <strong>AQ上传与下蝲q的方法:</strong> <br /> <br /> 只有一个:initialize?<br /> <br /> 作用Q执行上传下载的初始化工作,必须W一个执行?<br /> <br /> 原型Q有多个Q主要用下面这个: <br /> <br /> public final void initialize(javax.servlet.jsp.PageContext pageContext) <br /> <br /> 其中QpageContext为JSP面内置对象Q页面上下文Q?<br /> <br /> <strong>BQ上传文件用的ҎQ?/strong> <br /> <br /> 1、upload <br /> <br /> 作用Q上传文件数据。对于上传操作,W一步执行initializeҎQ第二步p执行q个Ҏ?<br /> <br /> 原型Qpublic void upload() <br /> <br /> 2、save <br /> <br /> 作用Q将全部上传文g保存到指定目录下Qƈq回保存的文件个数?<br /> <br /> 原型Qpublic int save(String destPathName) <br /> <br /> 和public int save(String destPathName,int option) <br /> <br /> 其中QdestPathName为文件保存目录,optionZ存选项Q它有三个|分别是SAVE_PHYSICAL,SAVE_VIRTUAL和SAVE_AUTO。(同FilecȝsaveAsҎ的选项之值类|SAVE_PHYSICAL指示lg文件保存到以操作系l根目录为文件根目录的目录下QSAVE_VIRTUAL指示lg文件保存到以Web应用E序根目录ؓ文g根目录的目录下,而SAVE_AUTO则表C由lg自动选择?<br /> <br /> 注:save(destPathName)作用{同于save(destPathName,SAVE_AUTO)?<br /> <br /> 3、getSize <br /> <br /> 作用Q取上传文g数据的总长?<br /> <br /> 原型Qpublic int getSize() <br /> <br /> 4、getFiles <br /> <br /> 作用Q取全部上传文gQ以Files对象形式q回Q可以利用Filescȝ操作Ҏ来获得上传文件的数目{信息?<br /> <br /> 原型Qpublic Files getFiles() <br /> <br /> 5、getRequest <br /> <br /> 作用Q取得Request对象Q以便由此对象获得上传表单参C倹{?<br /> <br /> 原型Qpublic Request getRequest() <br /> <br /> 6、setAllowedFilesList <br /> <br /> 作用Q设定允怸传带有指定扩展名的文Ӟ当上传过E中有文件名不允许时Q组件将抛出异常?<br /> <br /> 原型Qpublic void setAllowedFilesList(String allowedFilesList) <br /> <br /> 其中QallowedFilesList为允怸传的文g扩展名列表,各个扩展名之间以逗号分隔。如果想允许上传那些没有扩展名的文gQ可以用两个逗号表示。例如:setAllowedFilesList("doc,txt,,")允怸传带doc和txt扩展名的文g以及没有扩展名的文g?<br /> <br /> 7、setDeniedFilesList <br /> <br /> 作用Q用于限制上传那些带有指定扩展名的文件。若有文件扩展名被限Ӟ则上传时lg抛出异常?<br /> <br /> 原型Qpublic void setDeniedFilesList(String deniedFilesList) <br /> <br /> 其中QdeniedFilesList为禁止上传的文g扩展名列表,各个扩展名之间以逗号分隔。如果想止上传那些没有扩展名的文gQ可以用两个逗号来表C。例如:setDeniedFilesList("exe,bat,,")禁止上传带exe和bat扩展名的文g以及没有扩展名的文g?<br /> <br /> 8、setMaxFileSize <br /> <br /> 作用Q设定每个文件允怸传的最大长度?<br /> <br /> 原型Qpublic void setMaxFileSize(long maxFileSize) <br /> <br /> 其中QmaxFileSizeZؓ每个文g允许上传的最大长度,当文件超出此长度Ӟ不被上传?<br /> <br /> 9、setTotalMaxFileSize <br /> <br /> 作用Q设定允怸传的文g的总长度,用于限制一ơ性上传的数据量大?<br /> <br /> 原型Qpublic void setTotalMaxFileSize(long totalMaxFileSize) <br /> <br /> 其中QtotalMaxFileSize为允怸传的文g的总长度?<br /> <br /> <strong>CQ下载文件常用的Ҏ</strong> <br /> <br /> 1、setContentDisposition <br /> <br /> 作用Q将数据q加到MIME文g头的CONTENT-DISPOSITION域。jspSmartUploadlg会在q回下蝲的信息时自动填写MIME文g头的CONTENT-DISPOSITION域,如果用户需要添加额外信息,L此方法?<br /> <br /> 原型Qpublic void setContentDisposition(String contentDisposition) <br /> <br /> 其中QcontentDispositiond的数据。如果contentDisposition为nullQ则lg自动添?attachment;"Q以表明下载的文g作ؓ附gQ结果是IE览器将会提C另存文Ӟ而不是自动打开q个文gQIE览器一般根据下载的文g扩展名决定执行什么操作,扩展名ؓdoc的将用wordE序打开Q扩展名为pdf的将用acrobatE序打开Q等{)?<br /> <br /> 2、downloadFile <br /> <br /> 作用Q下载文件?<br /> <br /> 原型Q共有以下三个原型可用,W一个最常用Q后两个用于Ҏ情况下的文g下蝲Q如更改内容cdQ更改另存的文g名)?<br /> <br /> ?public void downloadFile(String sourceFilePathName) <br /> <br /> 其中QsourceFilePathName下蝲的文件名Q带目录的文件全名) <br /> <br /> ?public void downloadFile(String sourceFilePathName,String contentType) <br /> <br /> 其中QsourceFilePathName下蝲的文件名Q带目录的文件全名),contentType为内容类型(MIME格式的文件类型信息,可被览器识别)?<br /> <br /> ?public void downloadFile(String sourceFilePathName,String contentType,String destFileName) <br /> <br /> 其中QsourceFilePathName下蝲的文件名Q带目录的文件全名),contentType为内容类型(MIME格式的文件类型信息,可被览器识别),destFileNameZ载后默认的另存文件名?<br /> <br /> <strong>三、文件上传篇</strong> <br /> <br /> <strong>?表单要求</strong> <br /> <br /> 对于上传文g的FORM表单Q有两个要求Q?<br /> <br /> 1、METHOD应用POSTQ即METHOD="POST"?<br /> <br /> 2、增加属性:ENCTYPE="multipart/form-data" <br /> <br /> 下面是一个用于上传文件的FORM表单的例子: <br /> <br /> <ccid_nobr> <table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"> <tbody> <tr> <td class="code" bgcolor="#e6e6e6"> <pre><ccid_code><FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="/jspSmartUpload/upload.jsp"> <INPUT TYPE="FILE" NAME="MYFILE"> <INPUT TYPE="SUBMIT"> </FORM></ccid_code></pre> </td> </tr> </tbody> </table> </ccid_nobr><br /> <br /> <strong>?上传的例?/strong> <br /> <br /> <strong>1、上传页面upload.html</strong> <br /> <br /> 本页面提供表单,让用户选择要上传的文gQ点?上传"按钮执行上传操作?<br /> <br /> 面源码如下Q?<br /> <br /> <ccid_nobr> <table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"> <tbody> <tr> <td class="code" bgcolor="#e6e6e6"> <pre><ccid_code><!-- 文g名:upload.html ? 者:U|软g制作中心雨亦?zhsoft88@sohu.com) --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>文g上传</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <p>&nbsp;</p> <p align="center">上传文g选择</p> <FORM METHOD="POST" ACTION="jsp/do_upload.jsp" ENCTYPE="multipart/form-data"> <input type="hidden" name="TEST" value="good"> <table width="75%" border="1" align="center"> <tr> <td><div align="center">1? <input type="FILE" name="FILE1" size="30"> </div></td> </tr> <tr> <td><div align="center">2? <input type="FILE" name="FILE2" size="30"> </div></td> </tr> <tr> <td><div align="center">3? <input type="FILE" name="FILE3" size="30"> </div></td> </tr> <tr> <td><div align="center">4? <input type="FILE" name="FILE4" size="30"> </div></td> </tr> <tr> <td><div align="center"> <input type="submit" name="Submit" value="上传它!"> </div></td> </tr> </table> </FORM> </body> </html></ccid_code></pre> </td> </tr> </tbody> </table> </ccid_nobr><br /> <br /> <strong>2、上传处理页面do_upload.jsp</strong> <br /> <br /> 本页面执行文件上传操作。页面源码中详细介绍了上传方法的用法Q在此不赘述了?<br /> <br /> 面源码如下Q?<br /> <br /> <ccid_nobr> <table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"> <tbody> <tr> <td class="code" bgcolor="#e6e6e6"> <pre><ccid_code><%-- 文g名:do_upload.jsp ? 者:U|软g制作中心雨亦?zhsoft88@sohu.com) --%> <%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*,com.jspsmart.upload.*" errorPage="" %> <html> <head> <title>文g上传处理面</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <% // 新徏一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 上传初始? su.initialize(pageContext); // 讑֮上传限制 // 1.限制每个上传文g的最大长度? // su.setMaxFileSize(10000); // 2.限制M传数据的长度? // su.setTotalMaxFileSize(20000); // 3.讑֮允许上传的文Ӟ通过扩展名限Ӟ,仅允许doc,txt文g? // su.setAllowedFilesList("doc,txt"); // 4.讑֮止上传的文Ӟ通过扩展名限Ӟ,止上传带有exe,bat, jsp,htm,html扩展名的文g和没有扩展名的文件? // su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); // 上传文g su.upload(); // 上传文件全部保存到指定目录 int count = su.save("/upload"); out.println(count+"个文件上传成功!<br>"); // 利用Request对象获取参数之? out.println("TEST="+su.getRequest().getParameter("TEST") +"<BR><BR>"); // 逐一提取上传文g信息Q同时可保存文g? for (int i=0;i<su.getFiles().getCount();i++) { com.jspsmart.upload.File file = su.getFiles().getFile(i); // 若文件不存在则l? if (file.isMissing()) continue; // 昄当前文g信息 out.println("<TABLE BORDER=1>"); out.println("<TR><TD>表单名QFieldNameQ?lt;/TD><TD>" + file.getFieldName() + "</TD></TR>"); out.println("<TR><TD>文g长度QSizeQ?lt;/TD><TD>" + file.getSize() + "</TD></TR>"); out.println("<TR><TD>文g名(FileNameQ?lt;/TD><TD>" + file.getFileName() + "</TD></TR>"); out.println("<TR><TD>文g扩展名(FileExtQ?lt;/TD><TD>" + file.getFileExt() + "</TD></TR>"); out.println("<TR><TD>文g全名QFilePathNameQ?lt;/TD><TD>" + file.getFilePathName() + "</TD></TR>"); out.println("</TABLE><BR>"); // 文件另? // file.saveAs("/upload/" + myFile.getFileName()); // 另存CWEB应用E序的根目录为文件根目录的目录下 // file.saveAs("/upload/" + myFile.getFileName(), su.SAVE_VIRTUAL); // 另存到操作系l的根目录ؓ文g根目录的目录? // file.saveAs("c:\\temp\\" + myFile.getFileName(), su.SAVE_PHYSICAL); } %> </body> </html></ccid_code></pre> </td> </tr> </tbody> </table> </ccid_nobr><br /> <br /> <strong>四、文件下载篇</strong> <br /> <br /> <strong>1、下载链接页面download.html</strong> <br /> <br /> 面源码如下Q?<br /> <br /> <ccid_nobr> <table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"> <tbody> <tr> <td class="code" bgcolor="#e6e6e6"> <pre><ccid_code><!-- 文g名:download.html ? 者:U|软g制作中心雨亦?zhsoft88@sohu.com) --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>下蝲</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <a href="jsp/do_download.jsp">点击下蝲</a> </body> </html></ccid_code></pre> </td> </tr> </tbody> </table> </ccid_nobr><br /> <br /> <strong>2、下载处理页面do_download.jsp</strong> do_download.jsp展示了如何利用jspSmartUploadlg来下载文Ӟ从下面的源码中就可以看到Q下载何其简单?<br /> <br /> 源码如下Q?<br /> <br /> <ccid_nobr> <table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"> <tbody> <tr> <td class="code" bgcolor="#e6e6e6"> <pre><ccid_code><%@ page contentType="text/html;charset=gb2312" import="com.jspsmart.upload.*" %><% // 新徏一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 初始? su.initialize(pageContext); // 讑֮contentDisposition为null以禁止浏览器自动打开文gQ? //保证点击链接后是下蝲文g。若不设定,则下载的文g扩展名ؓ //docӞ览器将自动用word打开它。扩展名为pdfӞ //览器将用acrobat打开? su.setContentDisposition(null); // 下蝲文g su.downloadFile("/upload/如何赚取我的W一桉.doc"); %></ccid_code></pre> </td> </tr> </tbody> </table> </ccid_nobr><br /> <br /> <ccid_code>注意Q执行下载的面Q在Java脚本范围外(?lt;% ... %>之外Q,不要包含HTML代码、空根{回车或换行{字W,有的话将不能正确下蝲。不信的话,可以在上q源码中%><%之间加入一个换行符Q再下蝲一下,保证出错。因为它影响了返回给览器的数据,D解析出错?/ccid_code> <br /> <br /> <strong>3、如何下载中文文?/strong> <br /> <br /> jspSmartUpload虽然能下载文Ӟ但对中文支持不。若下蝲的文件名中有汉字Q则览器在提示另存的文件名Ӟ昄的是一堆ؕ码,很扫人兴。上面的例子是q样。(q个问题也是众多下蝲lg所存在的问题,很少有h解决Q搜索不到相兌料,可叹Q) <br /> <br /> ZljspSmartUploadlg增加下蝲中文文g的支持,我对该组件进行了研究Q发现对q回l浏览器的另存文件名q行UTF-8~码后,览器便能正显CZ文名字了。这是一个o人高兴的发现。于是我对jspSmartUploadlg的SmartUploadcd了升U处理,增加了toUtf8Stringq个ҎQ改动部分源码如下: <br /> <br /> <ccid_nobr> <table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"> <tbody> <tr> <td class="code" bgcolor="#e6e6e6"> <pre><ccid_code>public void downloadFile(String s, String s1, String s2, int i) throws ServletException, IOException, SmartUploadException { if(s == null) throw new IllegalArgumentException("File '" + s + "' not found (1040)."); if(s.equals("")) throw new IllegalArgumentException("File '" + s + "' not found (1040)."); if(!isVirtual(s) && m_denyPhysicalPath) throw new SecurityException("Physical path is denied (1035)."); if(isVirtual(s)) s = m_application.getRealPath(s); java.io.File file = new java.io.File(s); FileInputStream fileinputstream = new FileInputStream(file); long l = file.length(); boolean flag = false; int k = 0; byte abyte0[] = new byte[i]; if(s1 == null) m_response.setContentType("application/x-msdownload"); else if(s1.length() == 0) m_response.setContentType("application/x-msdownload"); else m_response.setContentType(s1); m_response.setContentLength((int)l); m_contentDisposition = m_contentDisposition != null ? m_contentDisposition : "attachment;"; if(s2 == null) m_response.setHeader("Content-Disposition", m_contentDisposition + " filename=" + toUtf8String(getFileName(s))); else if(s2.length() == 0) m_response.setHeader("Content-Disposition", m_contentDisposition); else m_response.setHeader("Content-Disposition", m_contentDisposition + " filename=" + toUtf8String(s2)); while((long)k < l) { int j = fileinputstream.read(abyte0, 0, i); k += j; m_response.getOutputStream().write(abyte0, 0, j); } fileinputstream.close(); } /** * 文件名中的汉字转ؓUTF8~码的串,以便下蝲时能正确昄另存的文件名. * U|软g制作中心雨亦?003.08.01 * @param s 原文件名 * @return 重新~码后的文g? */ public static String toUtf8String(String s) { StringBuffer sb = new StringBuffer(); for (int i=0;i<s.length();i++) { char c = s.charAt(i); if (c >= 0 && c <= 255) { sb.append(c); } else { byte[] b; try { b = Character.toString(c).getBytes("utf-8"); } catch (Exception ex) { System.out.println(ex); b = new byte[0]; } for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) k += 256; sb.append("%" + Integer.toHexString(k). toUpperCase()); } } } return sb.toString(); }</ccid_code></pre> </td> </tr> </tbody> </table> </ccid_nobr><br /> <br /> 注意源码中粗体部分,原jspSmartUploadlg对返回的文g未作M处理Q现在做了编码的转换工作Q将文g名{换ؓUTF-8形式的编码Ş式。UTF-8~码对英文未作Q何处理,对中文则需要{换ؓ%XX的Ş式。toUtf8StringҎ中,直接利用Java语言提供的编码{换方法获得汉字字W的UTF-8~码Q之后将其{换ؓ%XX的Ş式?<br /> <br /> 源码编译后打包成jspSmartUpload.jarQ拷贝到Tomcat的shared/lib目录下(可ؓ所有WEB应用E序所׃nQ,然后重启Tomcat服务器就可以正常下蝲含有中文名字的文件了。另QtoUtf8StringҎ也可用于转换含有中文的超U链接,以保证链接的有效Q因为有的WEB服务器不支持中文链接?<br /> <br /> 结QjspSmartUploadlg是应用JSPq行B/SE序开发过E中l常使用的上传下载组Ӟ它用简单,方便。现在我又ؓ其加上了下蝲中文名字的文件的支持Q真个是如虎ȝQ必赢得更多开发者的青睐?/font></span></span> <img src ="http://www.aygfsteel.com/sdwenfj/aggbug/165465.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/sdwenfj/" target="_blank">亚龙(二丙)</a> 2007-12-05 13:15 <a href="http://www.aygfsteel.com/sdwenfj/archive/2007/12/05/165465.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Է</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƶ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank">¹Ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">º</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank">͸</a>| <a href="http://" target="_blank">ؼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank">ϲ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƾ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϴ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>