8

GWT(Google Web Toolkit)を使ってWebサイトを作っています。ユーザーにテーブルを表示し、ユーザーにテーブルの内容をダウンロードさせる必要があります。

クライアント側で、ユーザーが「ダウンロード」ボタンを押したときにファイルをダウンロードするにはどうすればよいですか?

「ダウンロード」ボタンにはonClick()リスナーがあります。クライアント側のクラスは extends Composite.

クラスを拡張しようとしましたが、HttpServlet複雑になりすぎます。

私はすでにここで投稿を読んでいます:

  1. http://www.mkyong.com/java/how-to-download-file-from-website-java-jsp/
  2. サーブレットでファイルをダウンロードするときに GWT を使用するには?

しかし、クライアント側でダウンロード可能なファイルをユーザーに提供する方法はまだわかりません。

4

4 に答える 4

24

あなたは本当にGWTクライアント側のJavaコードとサーバー側のJavaコードを区別する必要があります。

GWTJavaコードのクライアント側

String url = GWT.getModuleBaseURL() + "downloadService?fileInfo1=" + fileInfo1;
Window.open( url, "_blank", "status=0,toolbar=0,menubar=0,location=0");

非gwtJavaコードのサーバー側-

web.xml内

<servlet>
    <servlet-name>downloadService</servlet-name>
    <servlet-class>AAA.BBB.CCC.DownloadServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>downloadService</servlet-name>
    <url-pattern>/<gwtmodulename>/downloadService</url-pattern>
</servlet-mapping>

サーバーパッケージコードでサーブレット

    public class DownloadServlet extends HttpServlet{
    protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException
        {
            String fileName = req.getParameter( "fileInfo1" );

            int BUFFER = 1024 * 100;
            resp.setContentType( "application/octet-stream" );
            resp.setHeader( "Content-Disposition:", "attachment;filename=" + "\"" + fileName + "\"" );
            ServletOutputStream outputStream = resp.getOutputStream();
            resp.setContentLength( Long.valueOf( getfile(fileName).length() ).intValue() );
            resp.setBufferSize( BUFFER );
            //Your IO code goes here to create a file and set to outputStream//

        }
    }

ファイルの内容をにプッシュしてください**outputStream**

于 2012-12-06T08:52:31.163 に答える
3

ファイルのパスがわかっている場合は、コードスニペットを以下に示します。

button.addClickHandler(new ClickHandler()  
{ 

    @Overrid
    public void onClick(ClickEvent event) 
    {
        Window.open(GWT.getHostPageBaseURL() + "/file.rar", "name", "enabled");
    }
});
于 2012-12-05T14:41:35.283 に答える
0

ioの部分で1番の項目の答えを完成させるには…

このリンクを参照できます

http://www.programcreek.com/2009/02/java-convert-a-file-to-byte-array-then-convert-byte-array-to-a-file/

またはこのコードを参照してください

File file = new File(enter the filepath here)
FileInputStream fis = new FileInputStream(file);
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                byte[] buf = new byte[1024];
                try {
                    for (int readNum; (readNum = fis.read(buf)) != -1;) {
                        bos.write(buf, 0, readNum); //no doubt here is 0
                        //Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
                        System.out.println("read " + readNum + " bytes,");
                    }
                } catch (IOException ex) {
                    System.err.println("unable to convert to bytes");
                }
                byte[] bytes = bos.toByteArray();
                outputStream.write(bytes);
                outputStream.flush();
                outputStream.close();

それが役に立てば幸い!

于 2016-03-28T03:26:45.350 に答える