2016-07-08 13 views
0

ダウンロードとして送信する代わりに、ブラウザ自体でファイルが開かれていますが、一部のコンテンツをtxtファイルとして送信しようとしています。これは、コードの私の作品である: - 説明したようファイルの内容がブラウザウィンドウに表示される代わりに、ダウンロードとして送信されます

StreamResource res = new StreamResource(new StreamSource() { 

     @Override 
     public InputStream getStream() { 
      StringBuffer buf = new StringBuffer(); 
      for (String record : records) 
       buf.append(record); 
      ByteArrayInputStream is = new ByteArrayInputStream(new String(buf).getBytes()); 
      return is; 
     } 
    }, filenameReport, app); 
    res.setMIMEType("text/plain"); 
    res.getStream().setParameter("Content-Disposition", "attachment; filename=" + filenameReport); 
    btnGet.getWindow().open(res); 

答えて

1

オープンウィンドウウインドウを開くん(それはそのように名付けられています理由です)

基本的な使用法はこれですhere

をファイルFileDownloaderクラスを使用します:

public class LettingUserDownladFile extends UI { 

    @Override 
    protected void init(VaadinRequest request) { 
     Button downloadButton = new Button("Download image"); 

     StreamResource myResource = createResource(); 
     FileDownloader fileDownloader = new FileDownloader(myResource); 
     fileDownloader.extend(downloadButton); 

     setContent(downloadButton); 
    } 

    private StreamResource createResource() { 
     return new StreamResource(new StreamSource() { 
      @Override 
      public InputStream getStream() { 
       String text = "My image"; 

       BufferedImage bi = new BufferedImage(100, 30, BufferedImage.TYPE_3BYTE_BGR); 
       bi.getGraphics().drawChars(text.toCharArray(), 0, text.length(), 10, 20); 

       try { 
        ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
        ImageIO.write(bi, "png", bos); 
        return new ByteArrayInputStream(bos.toByteArray()); 
       } catch (IOException e) { 
        e.printStackTrace(); 
        return null; 
       } 

      } 
     }, "myImage.png"); 
    } 

} 
+0

しかし、私のプロジェクトは6 vaadinである...私はあなたがアプリケーションシート「のコンテンツタイプを試してみてください6をvaadinこの –

+0

あちこちのためvaadin 7に移行することはできませんイオン/未知 " –

関連する問題