0

こんにちは、次の Java コードを試してみましたが、Java アプリケーションとして使用すると正常に動作しますが、サーブレット ページで同じコードを使用すると動作しません。つまり、ファイルをダウンロードできません。サーブレットを使用してファイルをダウンロードできるようにするには、どのような変更を行う必要があるかを提案してください。

a.

    java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL("http://169.254.174.150:8084/WebApplication1/files/check.txt").openStream());
    File f1 = new File("D:\\a.txt");
    java.io.FileOutputStream fos = new java.io.FileOutputStream(f1);
    java.io.BufferedOutputStream bout = new BufferedOutputStream(fos, 1024);
    byte data[] = new byte[1024];
    while (in.read(data, 0, 1024) >= 0) {
        bout.write(data);
    }
    bout.close();
    in.close();
}

b. http://www.javabeat.net/examples/2012/04/13/download-file-from-http-https-server-using-java/

4

2 に答える 2

0

指定したような古いJavaBeatの例の1つは、ここにあります。

他の解決策も見つけましたが、これが最も包括的なようです。

于 2012-04-25T04:51:37.647 に答える
0

いくつかのこと、それをファイルに書き込むことのはめ込みで、データを直接応答に書き込んでみてください。データを書き込む前に、応答に次のパラメータを設定する必要があります

        //byte[] filedata = ; intialize your file contents
        String filename = "a.txt";

        //      set the header information in the response.
        res.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\";");
        res.setContentType("application/x-unknown");
        ByteArrayInputStream byteStream = new ByteArrayInputStream(filedata);
        BufferedInputStream bufStream = new BufferedInputStream(byteStream);
        ServletOutputStream responseOutputStream = res.getOutputStream();
        int data = bufStream.read();
        while (data != -1)
        {
            responseOutputStream.write(data);
            data = bufStream.read();
        }

        bufStream.close();
        responseOutputStream.close();

ここで、resはHttpServletResponseオブジェクトです。この後、responseOutputStreamにデータを書き込むことができます。

于 2012-04-25T04:52:27.557 に答える