在我们的应用程序中,我们需要实现以下场景:
我们的应用程序是基于ajax的应用程序,因此发送ajax请求(如使用jquery.ajax()函数)将非常简单方便。
但是在googilng之后,事实证明文件下载只有在使用非ajax POST请求时才是可能的(就像在这个流行的SO线程中描述的那样)。所以我们需要实现更丑陋和更复杂的解决方案,需要构建form
的超文本标记语言结构和嵌套的隐藏字段。
有人能简单地解释一下为什么ajax请求不能用于下载文件吗?这背后的机制是什么?
这也是我两天前问自己的问题。有一个使用ExtJS编写客户端的项目,服务器端实现是在ASP上进行的。网我必须将服务器端翻译成Java。有一个下载XML文件的函数,该文件是服务器在客户机发出Ajax请求后生成的。我们都知道,在Ajax请求后下载文件,仅仅将其存储在内存中是不可能的。但是在原始应用程序中,浏览器显示通常的对话框,其中包括打开、保存和取消下载选项。ASP。Net以某种方式改变了标准行为。。。我花了两天的时间再次证明,并没有办法按要求以通常的方式下载文件。。。唯一的例外是ASP。网这里是ASP。网络代码
public static void WriteFileToResponse(byte[] fileData, string fileName)
{
var response = HttpContext.Current.Response;
var returnFilename = Path.GetFileName(fileName);
var headerValue = String.Format("attachment; filename={0}",
HttpUtility.UrlPathEncode(
String.IsNullOrEmpty(returnFilename)
? "attachment" : returnFilename));
response.AddHeader("content-disposition", headerValue);
response.ContentType = "application/octet-stream";
response.AddHeader("Pragma", "public");
var utf8 = Encoding.UTF8;
response.Charset = utf8.HeaderName;
response.ContentEncoding = utf8;
response.Flush();
response.BinaryWrite(fileData);
response.Flush();
response.Close();
}
这个方法是从WebMethod调用的,反过来,它又是从ExtJS. A调用的jax.request.这就是魔力。对我来说,我以servlet和隐藏的iframe结束...
这可以使用名为Blob的新HTML5特性来完成。有一个库文件保存器。可以用作该功能顶部的包装器的js。
这与AJAX无关。当然,您可以使用AJAX下载文件。但是,文件将保留在内存中,即您无法将文件保存到磁盘。这是因为JavaScript无法与磁盘交互。这将是一个严重的安全问题,在所有主要浏览器中都会被阻止。
问题内容: 在我们的应用程序中,我们需要实现以下场景: 客户发送请求 服务器处理请求并生成文件 服务器返回文件作为响应 客户端浏览器显示文件下载弹出对话框,并允许用户下载文件 我们的应用程序是基于ajax的应用程序,因此对于我们来说,发送ajax请求(就像使用jquery.ajax()function一样)非常容易和方便。 但是在googilng之后,事实证明只有在使用非ajaxPOST请求时才可
问题内容: 在我们的应用程序中,我们需要实现以下场景: 客户端发送请求 服务器处理请求并生成文件 服务器返回文件作为响应 客户端浏览器显示文件下载弹出对话框,并允许用户下载文件 我们的应用程序是基于ajax的应用程序,因此对于我们来说,发送ajax请求(就像使用function一样)非常容易和方便。 但是在googilng之后,事实证明只有在使用非ajax POST请求时才可以下载文件(如该流行的
问题内容: 我想在单击按钮时发送“ ajax下载请求”,所以我尝试了这种方式: javascript: download.php: 但是没有按预期工作,我该怎么办?先感谢您 问题答案: 2015年4月27日更新 进入HTML5场景的是download属性。它支持在Firefox和Chrome,并很快来到IE11。根据您的需求,只要您要下载的文件与您的网站位于同一来源,就可以使用它代替AJAX请求(
问题内容: 当我单击按钮时,我想发送“ ajax下载请求”,因此我尝试了这种方式: javascript: download.php: 但是没有按预期工作,我该怎么办?先感谢您 问题答案: 进入HTML5场景的是download属性。它支持在Firefox和Chrome,并很快来到IE11。根据您的需求,只要您要下载的文件与您的网站位于同一来源,就可以使用它代替AJAX请求(或使用)。 您始终可以
问题内容: 以下是ajax请求。 这就是delete.php 运行代码后,它将成功删除文件,但不会显示任何消息。 我也尝试将ajax请求更改为: 仍然不显示该消息。所以我想在delete.php文件中出了点问题。请帮忙。 问题答案: 进行jquery + ajax + php的最佳方法如下: jQuery的: PHP:
问题内容: 我想知道是否可以对特定网址进行ajax发布请求,并且仅应要求在数据中接收zip文件?还是我必须发送两个请求…一个,是为了使已创建的服务器内的zip文件的URL成为另一个,而另一个要下载该zip文件? 问题答案: 本机答案是否定的! 但是你可以这样做。 您的ajax请求: 您的php文件: