雅典之夏的小站
          知人者智 自知者明 Fighting!!
          一直以來,認為實現這種上傳要比下載簡單的多,可是等到真正去實現的時候,才發現原來挺麻煩的
          遇到的問題有:
                1中文文件名的問題。

                2文件沒有下載提示直接就打開,包括rar的。

          就這么兩個小問題卻讓我花了三天的時間,不得不汗一下我的效率。

                首先來說中文鏈接的問題,tomcat默認是不支持中文URL的,但是可以在Sever.xml中把 Connector 的屬性加上一條:   URIEncoding="GBK";然后在傳遞之前,鏈接的中文還要先encode一下
          例如:java.net.URLEncoder.encode(“測試.txt”);   這樣中文就會變成%D%F之類的,總之就可以正常傳遞了。
                而關于點擊文件直接就打開了是比較郁悶,查找了些資料,也試了網上的一些方法,一直不行
          ,最后采用的文件流的方式,才順利解決。代碼大致如下:


          while(rs.next()){
            try{
            OutputStream o=response.getOutputStream();
            byte b[]=new byte[500];
            filename=rs.getString("filename");//rs.為從數據庫查找到的結果集
            filename=java.net.URLEncoder.encode(filename).trim();
            File file=new File("d:/upload/20060221/",rs.getString("filename"));
            //
            response.setHeader("Content-Disposition","attachment; filename="+filename); 
            response.setContentType("APPLICATION/OCTET-STREAM");
               long fileLength=file.length();
               String length=String.valueOf(fileLength);
               response.setHeader("Content_Length",length);
               java.io.FileInputStream in = new java.io.FileInputStream(file);
            int n=0;
             while ((n=in.read(b)) != -1) {
               o.write(b,0,n);
             }
             in.close();
            o.close();
            }catch(Exception e){
             System.out.print(e);
            }
           }
           rs.close();
                 
          這樣的話,中英文文件都能正常下載并使用,但是中文文件用Ie直接下載下來后文件名還是亂碼,用下載工具則一切正常。
          posted on 2006-02-21 15:58 rkind 閱讀(260) 評論(0)  編輯  收藏 所屬分類: JSP&Servlet
          主站蜘蛛池模板: 独山县| 石门县| 舞阳县| 金山区| 陵川县| 东阿县| 天峨县| 宕昌县| 怀柔区| 麻江县| 巴塘县| 霍山县| 克山县| 库伦旗| 新津县| 天长市| 微博| 石棉县| 乾安县| 潼关县| 获嘉县| 奇台县| 彭州市| 北川| 福州市| 礼泉县| 黑龙江省| 阳东县| 张掖市| 昔阳县| 登封市| 宾阳县| 古蔺县| 三台县| 察隅县| 石棉县| 壤塘县| 江陵县| 灵璧县| 吐鲁番市| 民乐县|