1

Java を初めて使用します。ダウンロード オプションをクリックして、pdf/txt/.xls または任意のファイルをダウンロードする必要があります。私の場合、配列リストに特定の値があり、jsp に表示されています。私のリスト(namelist)で私は持っています

name=rahul
url=files/en/software/rahul.txt
name=roshan
url=files/en/software/roshan.pdf

(namelist) を反復して上記を jsp に表示すると、i my jsp

<td valign="top">${namelist.name}</td>

<td colspan="2" valign="top">                           
<a href="${namelist.url}"/>
<img src="/images/download.gif" alt="Download" border="0" align="right"></a><br/><br/>
</td>

私のjsp iamには、URLに多くのユーザー名とそれらに対応するファイルがあります。ダウンロードをクリックすると、ブラウザでファイルが開きます。URL http://www.xxx.com/files/en/software/roshan.pdf

しかし、ポップアップがユーザーに名前を付けて保存/開くオプションを要求するので、これを開く必要があります。この URL をコントローラーに渡すと、値 /files/en/software/roshan.pdf のみが取得されます。response.setHeader("Content-Disposition", "attachment;filename="+name); の使用を提案しているすべての場所で同じものを検索しました。

だから私はダウンロードという名前のコントローラーを作成し、ダウンロードをクリックすると、このようなURLをマッピングしました

<a href='<c:url value="/download.sp?name=${namelist.name}&downloadUrl=${namelist.url}"/>'>
<img src="/images/download.gif" alt="Download" border="0" align="right"></a><br/><br/>

ここに私のコントローラーがあります。私は正確に何をすべきかわかりません、私はこのように書いています

public ModelAndView download(HttpServletRequest request, HttpServletResponse response) throws Exception {
        cat.debug(" download: begin");
        ModelAndView modelView = super.handleRequest(request, response);
        String url = request.getParameter("downloadUrl");
        String name = request.getParameter("name");
        response.setHeader("Content-Disposition", "attachment;filename="+name);
        String viewName = "swl_download";
        modelView.setViewName(viewName);
        return modelView;
}

上記は同じ名前のポップアップを開いています。ダウンロードをクリックすると、ファイルがurlの同じファイルになるように、コントローラーにさらに含めたいと思います(上記のコントローラーに含めるもの/変更)。これを解決するのを手伝ってください。助けてくれてありがとう。

4

1 に答える 1

1

sql_download ビューが何をしているかを確認する必要があります。

一般に、ビュー自体でコンテンツの配置を設定します。したがって、私のカスタム AbstractView 実装は次のようになります。

response.setHeader("Content-disposition", "attachment; filename="+fileName); response.setContentType("application/vnd.ms-excel"); OutputStream out = response.getOutputStream(); helperClass.exportDataToExcel(data, out);

ブラウザがドキュメントをロードするための正しいアプリケーションを選択できるようにするために、コンテンツ タイプも重要です。

これらのヘッダーはブラウザへの提案にすぎないことを知っておく必要があります。ブラウザは自由に独自の方法で解釈できます。そのため、すべてのブラウザーに「開くか保存するか」ダイアログを強制的に表示することはできません。

お役に立てれば。

于 2013-04-19T11:51:14.813 に答える