雅典之夏的小站
          知人者智 自知者明 Fighting!!

          采用了tomcat發(fā)布,調(diào)用了jarkarta的一個(gè)common-fileup組件,

          著先配置好classpath,加上servlet.jar和commons-fileupload-1.0.jar,

          然后把commons-fileupload-1.0.jar放到root下的web-inf/lib/下

          編寫up.java并編繹,放到web-inf/classes目錄下

          import javax.servlet.*;
          import javax.servlet.http.*;
          import java.io.*;
          import java.util.*;
          import java.util.regex.*;
          import org.apache.commons.fileupload.*;


          public class up extends HttpServlet {
            private static final String CONTENT_TYPE = "text/html; charset=GB2312";
            //Process the HTTP Post request
            public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              response.setContentType(CONTENT_TYPE);
              PrintWriter out=response.getWriter();
              try {
              DiskFileUpload fu = new DiskFileUpload();
           // 設(shè)置允許用戶上傳文件大小,單位:字節(jié),這里設(shè)為2m
           fu.setSizeMax(2*1024*1024);
           // 設(shè)置最多只允許在內(nèi)存中存儲(chǔ)的數(shù)據(jù),單位:字節(jié)
           fu.setSizeThreshold(4096);
           // 設(shè)置一旦文件大小超過(guò)getSizeThreshold()的值時(shí)數(shù)據(jù)存放在硬盤的目錄
           fu.setRepositoryPath("c:\\windows\\temp");
           //開(kāi)始讀取上傳信息
           List fileItems = fu.parseRequest(request);
           // 依次處理每個(gè)上傳的文件
             Iterator iter = fileItems.iterator();

          //正則匹配,過(guò)濾路徑取文件名
             String regExp=".+\\\\(.+)$";

          //過(guò)濾掉的文件類型
          String[] errorType={".exe",".com",".cgi",".asp"};
             Pattern p = Pattern.compile(regExp);
                while (iter.hasNext()) {
                 FileItem item = (FileItem)iter.next();
                 //忽略其他不是文件域的所有表單信息
                 if (!item.isFormField()) {
                     String name = item.getName();
                     long size = item.getSize();
                     if((name==null||name.equals("")) && size==0)
                         continue;
                  Matcher m = p.matcher(name);
                 boolean result = m.find();
                 if (result){
                     for (int temp=0;temp<errorType.length;temp++){
                     if (m.group(1).endsWith(errorType[temp])){
                           throw new IOException(name+": wrong type");
                     }
                     }
                     try{

          //保存上傳的文件到指定的目錄

          //在下文中上傳文件至數(shù)據(jù)庫(kù)時(shí),將對(duì)這里改寫
                       item.write(new File("d:\\" + m.group(1)));

                     out.print(name+"&nbsp;&nbsp;"+size+"<br>");
                     }
                     catch(Exception e){
                       out.println(e);
                      
                     }

                  }
                 else
                 {
                   throw new IOException("fail to upload");
                 }
                 }
             }
          }
           catch (IOException e){
             out.println(e);
           }
           catch (FileUploadException e){
                out.println(e);

           }
           
            }
          }

          然后布署好web.xml,在其中加入

          <servlet>
                  <servlet-name>up</servlet-name>
                  <servlet-class>up</servlet-class>
              </servlet>
              <servlet-mapping>
                  <servlet-name>up</servlet-name>
                  <url-pattern>/fileup</url-pattern>
              </servlet-mapping>

          好了現(xiàn)在再編寫一個(gè)htm測(cè)試一下就ok了,注意url-pattern里面的路徑必須跟表格中action的屬性一樣.

          <html>
           <h1>文件上傳演示</h1>

          <form name="uploadform" method="POST" action="/fileup" ENCTYPE="multipart/form-data">

                  <table border="1" width="450" cellpadding="4" cellspacing="2" bordercolor="#9BD7FF">

                  <tr><td width="100%" colspan="2">

                                  文件1:<input name="x" size="40" type="file">

                  </td></tr>

                  <tr><td width="100%" colspan="2">

                                  文件2:<input name="y" size="40" type="file">

                  </td></tr>

                  <tr><td width="100%" colspan="2">

                                  文件3:<input name="z" size="40" type="file">

                  </td></tr>

                  </table>

                  <br/><br/>

                  <table>

                  <tr><td align="center"><input name="upload" type="submit" value="開(kāi)始上傳"/></td></tr>

                 </table>

          </form>


          </html>

          posted @ 2005-10-27 12:43 rkind 閱讀(270) | 評(píng)論 (0)編輯 收藏
          解決Win2000Sever登錄時(shí)“不支持網(wǎng)絡(luò)請(qǐng)求,系統(tǒng)無(wú)法讓您登陸”問(wèn)題
          文章來(lái)源:http://blog.csdn.net/rkind/archive/2005/09/16/482030.aspx
          posted @ 2005-10-27 09:12 rkind 閱讀(250) | 評(píng)論 (0)編輯 收藏
          僅列出標(biāo)題
          共8頁(yè): 上一頁(yè) 1 2 3 4 5 6 7 8 
          主站蜘蛛池模板: 南靖县| 泾源县| 闵行区| 桑植县| 龙陵县| 静安区| 武宣县| 苏州市| 远安县| 碌曲县| 四子王旗| 南乐县| 镇平县| 措勤县| 尼木县| 凤山县| 贵港市| 宾阳县| 仪陇县| 淅川县| 驻马店市| 施秉县| 马公市| 清水县| 重庆市| 宿州市| 东乡族自治县| 永嘉县| 宜川县| 济南市| 花莲县| 若尔盖县| 漳平市| 郁南县| 卢龙县| 永丰县| 南漳县| 绥阳县| 芒康县| 宽城| 青龙|