jQuery.Ajax下载文件

jQuery.Ajax下载文件


下面是一个使用插件源代码的简单用例演示。 演示页面包含了许多其他的'更好的用户界面'示例。

$.fileDownload('some/file.pdf')
. done(function () { alert('File download a success!'); })
. fail(function () { alert('File download failed!'); });

你不能,也不需要通过Ajax进行这里操作。 只使用

window.location="download.action?para1=value1...."

1 。不受框架影响的:Servlet下载文件作为附件

<!-- with JS -->
<a href="javascript:window.location='downloadServlet?param1=value1'">
 download
</a>
<!-- without JS -->
<a href="downloadServlet?param1=value1"> download</a>

2.Struts2 框架︰行动下载文件作为附件

<!-- with JS -->
<a href="javascript:window.location='downloadAction.action?param1=value1'">
 download
</a>
<!-- without JS -->
<a href="downloadAction.action?param1=value1"> download</a>

最好是使用 <s:a> 标记指向 OGNL<s:url>url创建标签:

<!-- without JS, with Struts tags: THE RIGHT WAY --> 
<s:url action="downloadAction.action" var="url">
 <s:param name="param1">value1</s:param>
</s:ulr>
<s:a href="%{url}"> download</s:a>

在上述情况下,需要Content-Disposition响应头,指定需要下载的文件( attachment ) ( inline ) 而不是打开的浏览器。需要指定内容类型,你可能希望添加文件名和( 帮助浏览器绘制真实的progressbar ) 长度。

例如下载ZIP时:

response.setContentType("application/zip");
response.addHeader("Content-Disposition", 
"attachment; filename="name of my file.zip"");
response.setHeader("Content-Length", myFile.length());//or myByte[].length...

直接与 Struts2 ( 除非你将这里操作用作一个 Servlet,否则将使用一个 hack 作为直接流编辑器,例如), 你不需要写任何响应,仅仅使用流结果类型 struts.xml 和配置它将工作: 示例

<result name="success" type="stream">
 <param name="contentType">application/zip</param>
 <param name="contentDisposition">attachment;filename="${fileName}"</param>
 <param name="contentLength">${fileLength}</param>
</result>

3 。框架不可知(/Struts2 框架): Servlet(/Action) 在浏览器中打开文件

如果你想在浏览器里打开文件,下载它,而是在 Content-disposition必须设置为内联,但目标不能当前窗口位置;你必须目标javascript创建的一个新窗口,一个 <iframe> 页面,或创建一个新窗口 on-the-fly"讨论过"target="_blank":

<!-- From a parent page into an IFrame without javascript --> 
<a href="downloadServlet?param1=value1" target="iFrameName">
 download
</a>
<!-- In a new window without javascript --> 
<a href="downloadServlet?param1=value1" target="_blank">
 download
</a>
<!-- In a new window with javascript --> 
<a href="javascript:window.open('downloadServlet?param1=value1');"> 
 download
</a>

展开阅读全文

没有更多推荐了,返回首页