2012-06-12 227 views
1

我是新来的java.I需要下载pdf/txt/.xls或任何文件上点击下载选项。 在我的情况下,我有数组列表中的某些值,并在jsp中显示。 以我列表(名称列表)IAM具有如何从url下载文件? (不在浏览器中打开)

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

但我想这是打开作为弹出窗口要求用户保存为/打开选项。 当把这个url传递给控制器​​时,我只获得/files/en/software/roshan.pdf的值。 我已经搜索了相同的地方,他们建议使用 response.setHeader(“Content-Disposition”,“attachment; filename =”+ name);

,所以我创建了一个名为下载控制器和下载的请点击我这样映射

<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/> 

在这里,在我的控制器的URL。 我唐诺究竟做了什么,我已经写了这样

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; 
} 

与同name.I以上是打开弹出要添加更多的控制器,使其下载点击该文件应该是相同的文件在URL(什么包括/在上述控制器中更改)。 请帮我解决这个问题。谢谢我提前帮助我。

+0

你是否得到下载文件名为swl_download? –

+0

看一下链接:[File-download-servlet](http://www.coderanch.com/t/366358/Servlets/java/File-download-servlet)。你可以用servlet本身来做,你不需要使用spring mvc。 – Elbek

+0

@subirkumarsao:该代码是例如获取下载文件名称为rahul.txt,但如何获得与rahul有关的网址中的文件?请帮帮我。 – Rahul

回答

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);

内容类型也很重要,以帮助您的浏览器选择正确的应用程序加载文档。

你应该知道这些标题只是浏览器的一个建议,浏览器可以自己的方式自由解释它们。因此,您将无法强制所有浏览器显示“打开或保存”对话框。

希望这会有所帮助。

相关问题