我是java新手。我需要点击下载选项下载pdf / txt / .xls或任何文件。 在我的情况下,我在数组列表中有一些值并在jsp中显示。 在我的名单(名单)中,我有
name=rahul
url=files/en/software/rahul.txt
name=roshan
url=files/en/software/roshan.pdf
当我迭代(名单)并在jsp中显示上面的内容时,我的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
但我希望打开这个弹出窗口,要求用户将另存为/ open选项。 当这个url传递给控制器时,我只得到值/files/en/software/roshan.pdf。 我在他们建议使用的每个地方搜索过相同的内容 response.setHeader(“Content-Disposition”,“attachment; filename =”+ name);
所以我创建了一个名为download的控制器,点击下载我就像这样映射了网址
<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中的相同文件(在上面的控制器中包含/更改的内容)。 请帮我解决这个问题。谢谢我提前帮助我。
答案 0 :(得分: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);
内容类型也很重要,可帮助您的浏览器选择正确的应用程序来加载文档。
你应该知道这些标题只是对浏览器的建议,浏览器可以自己解释它们。因此,您将无法强制所有浏览器显示“打开或保存”对话框。
希望这有帮助。