2012-01-20 9 views
-1

ファイルをダウンロードするコードをデータベーステーブルに作成しました。ダウンロード中にプロンプ​​トが表示されますが、ダウンロードして空きファイルとして開くか、 2つのサービスメソッドを呼び出すコントローラーdownloadfile(): - バイト配列にBLOB型を取得します。データベーステーブルからファイルをダウンロードする(Mysql、spring)

downloadfilename(): - データベースに保存されているファイル名を取得します。 Contoller

のコード
protected ModelAndView handleRequestInternal(HttpServletRequest request, 
       HttpServletResponse response) throws Exception { 
      byte[] fileBytes = userService.downloadFile(); 
      String filename = userService.downloadFileName(); 

      String fileType = filename.substring(filename.indexOf(".")+1,filename.length()); 
      System.out.println("FILETYPE IS :>>>>>>>>>>>>>>>"+fileType); 

      if (fileType.trim().equalsIgnoreCase("txt")) 
      { 
      response.setContentType("text/plain"); 
      } 
      else if (fileType.trim().equalsIgnoreCase("doc")) 
      { 
      response.setContentType("application/msword"); 
      } 
      else if (fileType.trim().equalsIgnoreCase("xls")) 
      { 
      response.setContentType("application/vnd.ms-excel"); 
      } 
      else if (fileType.trim().equalsIgnoreCase("pdf")) 
      { 
      response.setContentType("application/pdf"); 
      } 
      else if (fileType.trim().equalsIgnoreCase("ppt")) 
      { 
      response.setContentType("application/ppt"); 
      } 
      else 
      { 
      response.setContentType("application/octet-stream"); 
      } 

      response.setHeader("Content-Disposition","attachment; filename=\""+filename+"\""); 
      response.setHeader("cache-control", "no-cache"); 
      response.setHeader("cache-control", "must-revalidate"); 

      ServletOutputStream outs = response.getOutputStream(); 
      outs.write(fileBytes); 
      outs.flush(); 
      outs.close(); 
      return null; 

     } 

DAOのクラス次のようになります。..

public String downloadFile(){ 
String selectquery = "select * from upload_file where id=1"; 
       System.out.println("inside after query"); 
       ResultSet rs = stmt.executeQuery(selectquery); 
       while (rs.next()) { 
        fileBytes = rs.getBytes("description"); 
        fileName = rs.getString("upload_filename"); 
        System.out.println("**************************************" 
          + fileName);  
       } 
       return fileName; 
      } catch (SQLException s) { 
       System.out.println(s); 
      } 
      connection.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

答えて

0

あなたの質問は本当に明確ではないが、私はあなたが何を意味するか知っていると思います。

ファイルが大きい場合(10MB)、httpヘッダーにコンテンツの長さを指定する必要があります。そうでなければ、ブラウザは変な動作をします。 (正確な制限は10MBはブラウザによって異なります)

関連する問題