ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99精品视频一区97,亚洲人成伊人成综合网久久久 ,久久在线免费观看http://www.aygfsteel.com/sdwenfj/category/27861.htmlzh-cnWed, 05 Dec 2007 08:35:08 GMTWed, 05 Dec 2007 08:35:08 GMT60è¯Õ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";
 }

]]>
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>¾l„äšgåQŒé€‚于嵌入执行上传下蝲操作的JSPæ–‡äšg中。该¾l„äšg有以下几个特点:(x¨¬) <br /> <br /> 1、ä‹É用简单。在JSPæ–‡äšg中仅仅书写三五行JAVA代码ž®±å¯ä»¥æžå®šæ–‡ä»¶çš„上传或下载,方便ã€?<br /> <br /> 2、能全程控制上传。利用jspSmartUpload¾l„äšg提供的对象及(qi¨¢ng)其操作方法,可以获得全部上传文äšg的信息(包括文äšg名,大小åQŒç±»åž‹ï¼Œæ‰©å±•名,文äšg数据½{‰ï¼‰(j¨ª)åQŒæ–¹ä¾¿å­˜å–ã€?<br /> <br /> 3、能对上传的文äšg在大ž®ã€ç±»åž‹ç­‰æ–šw¢åšå‡ºé™åˆ¶ã€‚如此可以æ×o(h¨´)掉不½W¦åˆè¦æ±‚的文件ã€?<br /> <br /> 4、下载灵‹z…R€‚仅写两行代码,ž®Þpƒ½æŠŠWeb服务器变成文件服务器。不½Ž¡æ–‡ä»¶åœ¨Web服务器的目录下或在其它ä“Q何目录下åQŒéƒ½å¯ä»¥åˆ©ç”¨jspSmartUpload˜q›è¡Œä¸‹è²ã€?<br /> <br /> 5、能ž®†æ–‡ä»¶ä¸Šä¼ åˆ°æ•°æ®åº“中åQŒä¹Ÿèƒ½å°†æ•°æ®åº“中的数据下载下来ã€?/strong>˜q™ç§åŠŸèƒ½é’ˆå¯¹çš„æ˜¯MYSQLæ•°æ®åº“ï¼Œå› äØ“(f¨´)不具有通用性,所以本文不准备举例介绍˜q™ç§ç”¨æ³•ã€?<br /> <br />   jspSmartUpload¾l„äšg可以从www.jspsmart.com¾|‘站上自ç”׃¸‹è½½ï¼ŒåŽ‹ç¾ƒåŒ…çš„åå­—æ˜¯jspSmartUpload.zip。下载后åQŒç”¨WinZip或WinRARž®†å…¶è§£åŽ‹åˆ°Tomcatçš„webapps目录下(本文以TomcatæœåŠ¡å™¨äØ“(f¨´)例进行介¾lï¼‰(j¨ª)。解压后åQŒå°†webapps/jspsmartupload目录下的子目录Web-infåå­—æ”¹äØ“(f¨´)全大写的WEB-INFåQŒè¿™æ ·ä¸€æ”¹jspSmartUpload¾cÀL‰èƒ½ä‹É用。因为Tomcatå¯ÒŽ(gu¨©)–‡ä»¶åå¤§å°å†™æ•æ„Ÿï¼Œå®ƒè¦æ±‚Web应用½E‹åºç›¸å…³çš„ç±»æ‰€åœ¨ç›®å½•äØ“(f¨´)WEB-INFåQŒä¸”必须是大写。接着重新启动TomcatåQŒè¿™æ ·å°±å¯ä»¥åœ¨JSPæ–‡äšg中ä‹É用jspSmartUpload¾l„äšgäº?ji¨£n)ã€?<br /> <br />   注意åQŒæŒ‰ä¸Šè¿°æ–ÒŽ(gu¨©)³•安装后,只有webapps/jspsmartupload目录下的½E‹åºå¯ä»¥ä½¿ç”¨jspSmartUpload¾l„äšgåQŒå¦‚果想让Tomcat服务器的所有Web应用½E‹åºéƒ½èƒ½ç”¨å®ƒåQŒå¿…™åÕdšå¦‚下工作åQ?<br /> <br /> 1åQŽè¿›å…¥å‘½ä»¤è¡ŒçŠ¶æ€ï¼Œž®†ç›®å½•切换到Tomcatçš„webapps/jspsmartupload/WEB-INF目录下ã€?<br /> <br /> 2åQŽè¿è¡ŒJAR打包命ä×o(h¨´)åQšjar cvf jspSmartUpload.jar com <br /> <br /> åQˆä¹Ÿå¯ä»¥æ‰“开资源½Ž¡ç†å™¨ï¼Œåˆ‡æ¢åˆ°å½“前目录,用WinZipž®†com目录下的所有文件压¾~©æˆjspSmartUpload.zipåQŒç„¶åŽå°†jspSmartUpload.zip换名为jspSmartUpload.jaræ–‡äšg卛_¯ã€‚)(j¨ª) <br /> <br /> 3åQŽå°†jspSmartUpload.jar拯‚´åˆ°Tomcatçš„shared/lib目录下ã€?<br /> <br /> <strong>二、相关类说明½‹?/strong> <br /> <br /> <strong>ãˆ?File¾c?/strong> <br /> <br />   ˜q™ä¸ª¾cÕdŒ…装了(ji¨£n)一个上传文件的所有信息。通过它,可以得到上传文äšg的文件名、文件大ž®ã€æ‰©å±•名、文件数据等信息ã€?<br /> <br />   File¾cÖM¸»è¦æä¾›ä»¥ä¸‹æ–¹æ³•:(x¨¬) <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 /> 其中åQŒdestFilePathName是另存的文äšg名,optionSaveAs是另存的选项åQŒè¯¥é€‰é¡¹æœ‰ä¸‰ä¸ªå€û|¼Œåˆ†åˆ«æ˜¯SAVEAS_PHYSICAL,SAVEAS_VIRTUALåQŒSAVEAS_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>的根目录为文件根目录另存文äšgåQŒSAVEAS_VIRTUAL表明以Web应用½E‹åºçš„æ ¹ç›®å½•为文件根目录另存文äšgåQŒSAVEAS_AUTO则表½Cø™®©¾l„äšg军_®šåQŒå½“Web应用½E‹åºçš„æ ¹ç›®å½•存在另存文äšg的目录时åQŒå®ƒä¼?x¨¬)选择SAVEAS_VIRTUALåQŒå¦åˆ™ä¼š(x¨¬)选择SAVEAS_PHYSICALã€?<br /> <br /> 例如åQŒsaveAs("/upload/sample.zip",SAVEAS_PHYSICAL)执行后若Web服务器安装在C盘,则另存的文äšg名实际是c:\upload\sample.zip。而saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)执行后若Web应用½E‹åºçš„æ ¹ç›®å½•是webapps/jspsmartuploadåQŒåˆ™å¦å­˜çš„æ–‡ä»¶åå®žé™…是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šå¯¹äºŽWeb½E‹åºçš„开发来è¯ß_(d¨¢)¼Œæœ€å¥½ä‹É用SAVEAS_VIRTUALåQŒä»¥ä¾¿ç§»æ¤ã€?<br /> <br /> 2、isMissing <br /> <br /> 作用åQšè¿™ä¸ªæ–¹æ³•用于判断用æˆäh˜¯å¦é€‰æ‹©äº?ji¨£n)æ–‡ä»Óž¼Œä¹Ÿå³å¯¹åº”的表单项是否有倹{€‚选择äº?ji¨£n)文件时åQŒå®ƒ˜q”回false。未选文件时åQŒå®ƒ˜q”回trueã€?<br /> <br /> 原型åQšpublic boolean isMissing() <br /> <br /> 3、getFieldName <br /> <br /> 作用åQšå–HTML表单中对应于此上传文件的表单™å¹çš„名字ã€?<br /> <br /> 原型åQšpublic String getFieldName() <br /> <br /> 4、getFileName <br /> <br /> 作用åQšå–æ–‡äšg名(不含目录信息åQ?<br /> <br /> 原型åQšpublic String getFileName() <br /> <br /> 5、getFilePathName <br /> <br /> 作用åQšå–æ–‡äšg全名åQˆå¸¦ç›®å½•åQ?<br /> <br /> 原型åQšpublic String getFilePathName <br /> <br /> 6、getFileExt <br /> <br /> 作用åQšå–æ–‡äšg扩展名(后缀åQ?<br /> <br /> 原型åQšpublic String getFileExt() <br /> <br /> 7、getSize <br /> <br /> 作用åQšå–æ–‡äšg长度åQˆä»¥å­—节计)(j¨ª) <br /> <br /> 原型åQšpublic int getSize() <br /> <br /> 8、getBinaryData <br /> <br /> 作用åQšå–æ–‡äšg数据中指定位¿UÕd¤„的一个字节,用于‹‚€(g¨¨)‹¹‹æ–‡ä»¶ç­‰å¤„理ã€?<br /> <br /> 原型åQšpublic byte getBinaryData(int index)。其中,index表示位移åQŒå…¶å€¼åœ¨0到getSize()-1之间ã€?<br /> <br /> <strong>ãˆ?Files¾c?/strong> <br /> <br />   ˜q™ä¸ª¾c»è¡¨½Cºæ‰€æœ‰ä¸Šä¼ æ–‡ä»¶çš„集合åQŒé€šè¿‡å®ƒå¯ä»¥å¾—åˆîC¸Šä¼ æ–‡ä»¶çš„æ•°ç›®ã€å¤§ž®ç­‰ä¿¡æ¯ã€‚有以下æ–ÒŽ(gu¨©)³•åQ?<br /> <br /> 1、getCount <br /> <br /> 作用åQšå–得上传文件的数目ã€?<br /> <br /> 原型åQšpublic int getCount() <br /> <br /> 2、getFile <br /> <br /> 作用åQšå–得指定位¿UÕd¤„的文件对象FileåQˆè¿™æ˜¯com.jspsmart.upload.FileåQŒä¸æ˜¯java.io.FileåQŒæ³¨æ„åŒºåˆ†ï¼‰(j¨ª)ã€?<br /> <br /> 原型åQšpublic File getFile(int index)。其中,index为指定位¿U»ï¼Œå…¶å€¼åœ¨0到getCount()-1之间ã€?<br /> <br /> 3、getSize <br /> <br /> 作用åQšå–得上传文件的总长度,可用于限制一‹Æ¡æ€§ä¸Šä¼ çš„æ•°æ®é‡å¤§ž®ã€?<br /> <br /> 原型åQšpublic long getSize() <br /> <br /> 4、getCollection <br /> <br /> 作用åQšå°†æ‰€æœ‰ä¸Šä¼ æ–‡ä»¶å¯¹è±¡ä»¥Collectionçš„åŞ式返回,以便其它应用½E‹åºå¼•用åQŒæµè§ˆä¸Šä¼ æ–‡ä»¶ä¿¡æ¯ã€?<br /> <br /> 原型åQšpublic Collection getCollection() <br /> <br /> 5、getEnumeration <br /> <br /> 作用åQšå°†æ‰€æœ‰ä¸Šä¼ æ–‡ä»¶å¯¹è±¡ä»¥EnumerationåQˆæžšä¸¾ï¼‰(j¨ª)çš„åŞ式返回,以便其它应用½E‹åº‹¹è§ˆä¸Šä¼ æ–‡äšg信息ã€?<br /> <br /> 原型åQšpublic Enumeration getEnumeration() <br /> <br /> <strong>ãˆ?Request¾c?/strong> <br /> <br />   ˜q™ä¸ª¾cȝš„功能½{‰åŒäºŽJSP内置的对象request。只所以提供这个类åQŒæ˜¯å› äØ“(f¨´)对于文äšg上传表单åQŒé€šè¿‡request对象无法获得表单™å¹çš„å€û|¼Œå¿…须通过jspSmartUpload¾l„äšg提供的Request对象来获取。该¾cÀLä¾›å¦‚下方法:(x¨¬) <br /> <br /> 1、getParameter <br /> <br /> 作用åQšèŽ·å–æŒ‡å®šå‚æ•îC¹‹å€¹{€‚当参数不存在时åQŒè¿”回å€égØ“(f¨´)nullã€?<br /> <br /> 原型åQšpublic String getParameter(String name)。其中,name为参数的名字ã€?<br /> <br /> 2、getParameterValues <br /> <br /> 作用åQšå½“一个参数可以有多个值时åQŒç”¨æ­¤æ–¹æ³•来取其倹{€‚它˜q”回的是一个字½W¦ä¸²æ•°ç»„。当参数不存在时åQŒè¿”回å€égØ“(f¨´)nullã€?<br /> <br /> 原型åQšpublic String[] getParameterValues(String name)。其中,name为参数的名字ã€?<br /> <br /> 3、getParameterNames <br /> <br /> 作用åQšå–å¾—Request对象中所有参数的名字åQŒç”¨äºŽéåŽ†æ‰€æœ‰å‚æ•°ã€‚å®ƒ˜q”回的是一个枚丑֞‹çš„对象ã€?<br /> <br /> 原型åQšpublic Enumeration getParameterNames() <br /> <br /> <strong>ãˆ?SmartUpload¾c?/strong>˜q™ä¸ª¾cÕd®Œæˆä¸Šä¼ ä¸‹è½½å·¥ä½œã€?<br /> <br /> <strong>AåQŽä¸Šä¼ ä¸Žä¸‹è²å…Þq”¨çš„æ–¹æ³•:(x¨¬)</strong> <br /> <br /> 只有一个:(x¨¬)initializeã€?<br /> <br /> 作用åQšæ‰§è¡Œä¸Šä¼ ä¸‹è½½çš„åˆå§‹åŒ–å·¥ä½œï¼Œå¿…é¡»½W¬ä¸€ä¸ªæ‰§è¡Œã€?<br /> <br /> 原型åQšæœ‰å¤šä¸ªåQŒä¸»è¦ä‹É用下面这个:(x¨¬) <br /> <br /> public final void initialize(javax.servlet.jsp.PageContext pageContext) <br /> <br /> 其中åQŒpageContext为JSP™åµé¢å†…置对象åQˆé¡µé¢ä¸Šä¸‹æ–‡åQ‰ã€?<br /> <br /> <strong>BåQŽä¸Šä¼ æ–‡ä»¶ä‹É用的æ–ÒŽ(gu¨©)³•åQ?/strong> <br /> <br /> 1、upload <br /> <br /> 作用åQšä¸Šä¼ æ–‡ä»¶æ•°æ®ã€‚对于上传操作,½W¬ä¸€æ­¥æ‰§è¡Œinitializeæ–ÒŽ(gu¨©)³•åQŒç¬¬äºŒæ­¥ž®Þp¦æ‰§è¡Œ˜q™ä¸ªæ–ÒŽ(gu¨©)³•ã€?<br /> <br /> 原型åQšpublic void upload() <br /> <br /> 2、save <br /> <br /> 作用åQšå°†å…¨éƒ¨ä¸Šä¼ æ–‡äšg保存到指定目录下åQŒåƈ˜q”回保存的文件个数ã€?<br /> <br /> 原型åQšpublic int save(String destPathName) <br /> <br /> å’Œpublic int save(String destPathName,int option) <br /> <br /> 其中åQŒdestPathName为文件保存目录,optionä¸ÞZ¿å­˜é€‰é¡¹åQŒå®ƒæœ‰ä¸‰ä¸ªå€û|¼Œåˆ†åˆ«æ˜¯SAVE_PHYSICAL,SAVE_VIRTUALå’ŒSAVE_AUTO。(同File¾cȝš„saveAsæ–ÒŽ(gu¨©)³•的选项之值类ä¼û|¼‰(j¨ª)SAVE_PHYSICAL指示¾l„äšgž®†æ–‡ä»¶ä¿å­˜åˆ°ä»¥æ“ä½œç³»¾lŸæ ¹ç›®å½•为文件根目录的目录下åQŒSAVE_VIRTUAL指示¾l„äšgž®†æ–‡ä»¶ä¿å­˜åˆ°ä»¥Web应用½E‹åºæ ¹ç›®å½•䨓(f¨´)æ–‡äšg根目录的目录下,而SAVE_AUTO则表½Cºç”±¾l„äšg自动选择ã€?<br /> <br /> 注:(x¨¬)save(destPathName)作用½{‰åŒäºŽsave(destPathName,SAVE_AUTO)ã€?<br /> <br /> 3、getSize <br /> <br /> 作用åQšå–上传文äšg数据的总长åº?<br /> <br /> 原型åQšpublic int getSize() <br /> <br /> 4、getFiles <br /> <br /> 作用åQšå–全部上传文äšgåQŒä»¥Files对象形式˜q”回åQŒå¯ä»¥åˆ©ç”¨Files¾cÈš„æ“ä½œæ–ÒŽ(gu¨©)³•来获得上传文件的数目½{‰ä¿¡æ¯ã€?<br /> <br /> 原型åQšpublic Files getFiles() <br /> <br /> 5、getRequest <br /> <br /> 作用åQšå–å¾—Request对象åQŒä»¥ä¾¿ç”±æ­¤å¯¹è±¡èŽ·å¾—ä¸Šä¼ è¡¨å•å‚æ•îC¹‹å€¹{€?<br /> <br /> 原型åQšpublic Request getRequest() <br /> <br /> 6、setAllowedFilesList <br /> <br /> 作用åQšè®¾å®šå…è®æ€¸Šä¼ å¸¦æœ‰æŒ‡å®šæ‰©å±•名的文ä»Óž¼Œå½“上传过½E‹ä¸­æœ‰æ–‡ä»¶åä¸å…è®¸æ—¶åQŒç»„件将抛出异常ã€?<br /> <br /> 原型åQšpublic void setAllowedFilesList(String allowedFilesList) <br /> <br /> 其中åQŒallowedFilesListä¸ºå…è®æ€¸Šä¼ çš„æ–‡äšg扩展名列表,各个扩展名之间以逗号分隔。如果想允许上传那些没有扩展名的文äšgåQŒå¯ä»¥ç”¨ä¸¤ä¸ªé€—号表示。例如:(x¨¬)setAllowedFilesList("doc,txt,,")ž®†å…è®æ€¸Šä¼ å¸¦docå’Œtxt扩展名的文äšg以及(qi¨¢ng)没有扩展名的文äšgã€?<br /> <br /> 7、setDeniedFilesList <br /> <br /> 作用åQšç”¨äºŽé™åˆ¶ä¸Šä¼ é‚£äº›å¸¦æœ‰æŒ‡å®šæ‰©å±•名的文件。若有文件扩展名被限åˆÓž¼Œåˆ™ä¸Šä¼ æ—¶¾l„äšgž®†æŠ›å‡ºå¼‚常ã€?<br /> <br /> 原型åQšpublic void setDeniedFilesList(String deniedFilesList) <br /> <br /> 其中åQŒdeniedFilesList为禁止上传的文äšg扩展名列表,各个扩展名之间以逗号分隔。如果想¼›æ­¢ä¸Šä¼ é‚£äº›æ²¡æœ‰æ‰©å±•名的文äšgåQŒå¯ä»¥ç”¨ä¸¤ä¸ªé€—号来表½Cºã€‚例如:(x¨¬)setDeniedFilesList("exe,bat,,")ž®†ç¦æ­¢ä¸Šä¼ å¸¦exeå’Œbat扩展名的文äšg以及(qi¨¢ng)没有扩展名的文äšgã€?<br /> <br /> 8、setMaxFileSize <br /> <br /> 作用åQšè®¾å®šæ¯ä¸ªæ–‡ä»¶å…è®æ€¸Šä¼ çš„æœ€å¤§é•¿åº¦ã€?<br /> <br /> 原型åQšpublic void setMaxFileSize(long maxFileSize) <br /> <br /> 其中åQŒmaxFileSizeä¸ÞZØ“(f¨´)每个文äšg允许上传的最大长度,当文件超出此长度æ—Óž¼Œž®†ä¸è¢«ä¸Šä¼ ã€?<br /> <br /> 9、setTotalMaxFileSize <br /> <br /> 作用åQšè®¾å®šå…è®æ€¸Šä¼ çš„æ–‡äšg的总长度,用于限制一‹Æ¡æ€§ä¸Šä¼ çš„æ•°æ®é‡å¤§ž®ã€?<br /> <br /> 原型åQšpublic void setTotalMaxFileSize(long totalMaxFileSize) <br /> <br /> 其中åQŒtotalMaxFileSizeä¸ºå…è®æ€¸Šä¼ çš„æ–‡äšg的总长度ã€?<br /> <br /> <strong>CåQŽä¸‹è½½æ–‡ä»¶å¸¸ç”¨çš„æ–ÒŽ(gu¨©)³•</strong> <br /> <br /> 1、setContentDisposition <br /> <br /> 作用åQšå°†æ•°æ®˜q½åŠ åˆ°MIMEæ–‡äšg头的CONTENT-DISPOSITION域。jspSmartUpload¾l„äšgä¼?x¨¬)在˜q”回下蝲的信息时自动填写MIMEæ–‡äšg头的CONTENT-DISPOSITION域,如果用户需要添加额外信息,è¯ïL(f¨¥ng)”¨æ­¤æ–¹æ³•ã€?<br /> <br /> 原型åQšpublic void setContentDisposition(String contentDisposition) <br /> <br /> 其中åQŒcontentDisposition䏸™¦æ·ÕdŠ çš„æ•°æ®ã€‚å¦‚æžœcontentDisposition为nullåQŒåˆ™¾l„äšgž®†è‡ªåŠ¨æ·»åŠ?attachment;"åQŒä»¥è¡¨æ˜Žž®†ä¸‹è½½çš„æ–‡äšgä½œäØ“(f¨´)附äšgåQŒç»“果是IE‹¹è§ˆå™¨å°†ä¼?x¨¬)提½Cºå¦å­˜æ–‡ä»Óž¼Œè€Œä¸æ˜¯è‡ªåŠ¨æ‰“å¼€˜q™ä¸ªæ–‡äšgåQˆIE‹¹è§ˆå™¨ä¸€èˆ¬æ ¹æ®ä¸‹è½½çš„æ–‡äšgæ‰©å±•åå†³å®šæ‰§è¡Œä»€ä¹ˆæ“ä½œï¼Œæ‰©å±•åäØ“(f¨´)doc的将用word½E‹åºæ‰“å¼€åQŒæ‰©å±•名为pdf的将用acrobat½E‹åºæ‰“å¼€åQŒç­‰½{‰ï¼‰(j¨ª)ã€?<br /> <br /> 2、downloadFile <br /> <br /> 作用åQšä¸‹è½½æ–‡ä»¶ã€?<br /> <br /> 原型åQšå…±æœ‰ä»¥ä¸‹ä¸‰ä¸ªåŽŸåž‹å¯ç”¨ï¼Œ½W¬ä¸€ä¸ªæœ€å¸¸ç”¨åQŒåŽä¸¤ä¸ªç”¨äºŽç‰ÒŽ(gu¨©)®Šæƒ…况下的文äšg下蝲åQˆå¦‚更改内容¾cÕdž‹åQŒæ›´æ”¹å¦å­˜çš„æ–‡äšg名)(j¨ª)ã€?<br /> <br /> â‘?public void downloadFile(String sourceFilePathName) <br /> <br /> 其中åQŒsourceFilePathName䏸™¦ä¸‹è²çš„æ–‡ä»¶ååQˆå¸¦ç›®å½•的文件全名)(j¨ª) <br /> <br /> â‘?public void downloadFile(String sourceFilePathName,String contentType) <br /> <br /> 其中åQŒsourceFilePathName䏸™¦ä¸‹è²çš„æ–‡ä»¶ååQˆå¸¦ç›®å½•的文件全名)(j¨ª),contentType为内容类型(MIME格式的文件类型信息,可被‹¹è§ˆå™¨è¯†åˆ«ï¼‰(j¨ª)ã€?<br /> <br /> â‘?public void downloadFile(String sourceFilePathName,String contentType,String destFileName) <br /> <br /> 其中åQŒsourceFilePathName䏸™¦ä¸‹è²çš„æ–‡ä»¶ååQˆå¸¦ç›®å½•的文件全名)(j¨ª),contentType为内容类型(MIME格式的文件类型信息,可被‹¹è§ˆå™¨è¯†åˆ«ï¼‰(j¨ª),destFileNameä¸ÞZ¸‹è½½åŽé»˜è®¤çš„另存文件名ã€?<br /> <br /> <strong>三、文件上传篇</strong> <br /> <br /> <strong>ãˆ?表单要求</strong> <br /> <br /> 对于上传文äšgçš„FORM表单åQŒæœ‰ä¸¤ä¸ªè¦æ±‚åQ?<br /> <br /> 1、METHOD应用POSTåQŒå³METHOD="POST"ã€?<br /> <br /> 2、增加属性:(x¨¬)ENCTYPE="multipart/form-data" <br /> <br /> 下面是一个用于上传文件的FORM表单的例子:(x¨¬) <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 /> 本页面提供表单,让用户选择要上传的文äšgå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名:(x¨¬)upload.html ä½? 者:(x¨¬)¾U‰|¨ªè½¯äšg制作中心(j¨©)雨亦å¥?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 /> 本页面执行文件上传操作。页面源码中详细介绍äº?ji¨£n)上传方法的用法åQŒåœ¨æ­¤ä¸èµ˜è¿°äº?ji¨£n)ã€?<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名:(x¨¬)do_upload.jsp ä½? 者:(x¨¬)¾U‰|¨ªè½¯äšg制作中心(j¨©)雨亦å¥?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.讑֮šå…è®¸ä¸Šä¼ çš„æ–‡ä»Óž¼ˆé€šè¿‡æ‰©å±•名限åˆÓž¼‰(j¨ª),仅允许doc,txtæ–‡äšgã€? // su.setAllowedFilesList("doc,txt"); // 4.è®‘Ö®š¼›æ­¢ä¸Šä¼ çš„æ–‡ä»Óž¼ˆé€šè¿‡æ‰©å±•名限åˆÓž¼‰(j¨ª),¼›æ­¢ä¸Šä¼ å¸¦æœ‰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>表单™å¹ååQˆF(tu¨¢n)ieldNameåQ?lt;/TD><TD>" + file.getFieldName() + "</TD></TR>"); out.println("<TR><TD>æ–‡äšg长度åQˆSizeåQ?lt;/TD><TD>" + file.getSize() + "</TD></TR>"); out.println("<TR><TD>æ–‡äšg名(F(tu¨¢n)ileNameåQ?lt;/TD><TD>" + file.getFileName() + "</TD></TR>"); out.println("<TR><TD>æ–‡äšg扩展名(F(tu¨¢n)ileExtåQ?lt;/TD><TD>" + file.getFileExt() + "</TD></TR>"); out.println("<TR><TD>æ–‡äšg全名åQˆF(tu¨¢n)ilePathNameåQ?lt;/TD><TD>" + file.getFilePathName() + "</TD></TR>"); out.println("</TABLE><BR>"); // ž®†æ–‡ä»¶å¦å­? // file.saveAs("/upload/" + myFile.getFileName()); // 另存åˆîC»¥WEB应用½E‹åºçš„æ ¹ç›®å½•为文件根目录的目录下 // file.saveAs("/upload/" + myFile.getFileName(), su.SAVE_VIRTUAL); // 另存到操作系¾lŸçš„æ ¹ç›®å½•䨓(f¨´)æ–‡äš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名:(x¨¬)download.html ä½? 者:(x¨¬)¾U‰|¨ªè½¯äšg制作中心(j¨©)雨亦å¥?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展示äº?ji¨£n)如何利用jspSmartUpload¾l„äšg来下载文ä»Óž¼Œä»Žä¸‹é¢çš„æºç ä¸­å°±å¯ä»¥çœ‹åˆ°å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以禁止浏览器自动打开文äšgåQ? //保证点击链接后是下蝲文äšg。若不设定,则下载的文äšgæ‰©å±•åäØ“(f¨´) //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Œå†ä¸‹è²ä¸€ä¸‹ï¼Œä¿è¯å‡ºé”™ã€‚因为它影响äº?ji¨£n)返回给‹¹è§ˆå™¨çš„æ•°æ®‹¹ï¼Œå¯ÆD‡´è§£æžå‡ºé”™ã€?/ccid_code> <br /> <br /> <strong>3、如何下载中文文ä»?/strong> <br /> <br /> jspSmartUpload虽然能下载文ä»Óž¼Œä½†å¯¹ä¸­æ–‡æ”¯æŒä¸èƒö。若下蝲的文件名中有汉字åQŒåˆ™‹¹è§ˆå™¨åœ¨æç¤ºå¦å­˜çš„æ–‡ä»¶åæ—Óž¼Œæ˜„¡¤ºçš„æ˜¯ä¸€å †äؕ码,很扫人兴。上面的例子ž®±æ˜¯˜q™æ ·ã€‚(˜q™ä¸ªé—®é¢˜ä¹Ÿæ˜¯ä¼—多下蝲¾l„äšg所存在的问题,很少有äh解决åQŒæœç´¢ä¸åˆ°ç›¸å…Œ™µ„料,可叹åQï¼‰(j¨ª) <br /> <br /> ä¸ÞZº†(ji¨£n)¾l™jspSmartUpload¾l„äšg增加下蝲中文文äšg的支持,我对该组件进行了(ji¨£n)研究åQŒå‘现对˜q”回¾l™æµè§ˆå™¨çš„另存文件名˜q›è¡ŒUTF-8¾~–码后,‹¹è§ˆå™¨ä¾¿èƒ½æ­£¼‹®æ˜¾½CÞZ¸­æ–‡åå­—了(ji¨£n)。这是一个ä×o(h¨´)人高兴的发现。于是我对jspSmartUpload¾l„äšgçš„SmartUpload¾cÕdšäº?ji¨£n)升¾U§å¤„理,增加äº?ji¨£n)toUtf8String˜q™ä¸ªæ–ÒŽ(gu¨©)³•åQŒæ”¹åŠ¨éƒ¨åˆ†æºç å¦‚ä¸‹ï¼š(x¨¬) <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(); } /** * ž®†æ–‡ä»¶åä¸­çš„æ±‰å­—è½¬äØ“(f¨´)UTF8¾~–码的串,以便下蝲时能正确昄¡¤ºå¦å­˜çš„æ–‡ä»¶å. * ¾U‰|¨ªè½¯äšg制作中心(j¨©)雨亦å¥?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 /> 注意源码中粗体部分,原jspSmartUpload¾l„äšg对返回的文äšg未作ä»ÖM½•处理åQŒçŽ°åœ¨åšäº?ji¨£n)编码的转换工作åQŒå°†æ–‡äšg名è{æ¢äØ“(f¨´)UTF-8形式的编码åŞ式。UTF-8¾~–码对英文未作ä“Q何处理,对中文则需要è{æ¢äØ“(f¨´)%XXçš„åŞ式。toUtf8Stringæ–ÒŽ(gu¨©)³•中,直接利用Java语言提供的编码è{换方法获得汉字字½W¦çš„UTF-8¾~–码åQŒä¹‹åŽå°†å…¶è{æ¢äØ“(f¨´)%XXçš„åŞ式ã€?<br /> <br /> ž®†æºç ç¼–译后打包成jspSmartUpload.jaråQŒæ‹·è´åˆ°Tomcatçš„shared/libç›®å½•ä¸‹ï¼ˆå¯äØ“(f¨´)所有WEB应用½E‹åºæ‰€å…׃ínåQ‰ï¼Œç„¶åŽé‡å¯Tomcat服务器就可以正常下蝲含有中文名字的文件了(ji¨£n)。另åQŒtoUtf8Stringæ–ÒŽ(gu¨©)³•也可用于转换含有中文的超¾U§é“¾æŽ¥ï¼Œä»¥ä¿è¯é“¾æŽ¥çš„æœ‰æ•ˆåQŒå› ä¸ºæœ‰çš„WEB服务器不支持中文链接ã€?<br /> <br /> ž®ç»“åQšjspSmartUpload¾l„äšg是应用JSP˜q›è¡ŒB/S½E‹åºå¼€å‘过½E‹ä¸­¾lå¸¸ä½¿ç”¨çš„上传下载组ä»Óž¼Œå®ƒä‹Éç”¨ç®€å•ï¼Œæ–¹ä¾¿ã€‚çŽ°åœ¨æˆ‘åˆäØ“(f¨´)其加上了(ji¨£n)下蝲中文名字的文件的支持å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>