1

インターネットからファイルをダウンロードしたいのですが、そのファイルの URL があります。だから私はダウンロードサーブレットを書きました:

public class DownloadServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        String pathToDownload = request.getParameter("url");

        URL url = new URL(pathToDownload);
        URLConnection uc = url.openConnection();
        String contentType = uc.getContentType();
        int contentLength = uc.getContentLength();
        InputStream is = uc.getInputStream();

        response.setContentType(contentType);
        // resp.setHeader("Content-Disposition", "attachment; filename*=\"utf-8''" + filename + "");
        ServletOutputStream os = response.getOutputStream();
        byte[] b = new byte[2048];
        int length;

        while ((length = is.read(b)) != -1) {
            os.write(b, 0, length);
        }
        is.close();
        os.close();
    }
}

これで、保存するかどうかに関係なく、ユーザーがファイルをクリックしたときにポップアップを表示したいので、

resp.setHeader("Content-Disposition", "attachment; filename*=\"utf-8''" + filename + "");

しかし、ファイル名をインターネートのファイル名と同じにしたいので、上記のスニペットでさらに何が必要ですか?

4

2 に答える 2

0
String disposition = httpConn.getHeaderField("Content-Disposition");
            if (disposition != null) {
                // extracts file name from header field

                int index = disposition.indexOf("filename=");
                if (index != 0) {
                    fileName = disposition.substring(index + 9,
                            disposition.length());
                }
            } else {
                // extracts file name from URL

                fileName = link.substring(link.lastIndexOf("/") + 1,
                        link.length());
            }
于 2016-05-10T13:15:17.777 に答える
0

最後の「/」から URL 文字列の最後までの部分文字列を切り取ります。これがファイル名です。

于 2013-02-12T07:15:37.787 に答える