我可以在Ajax调用上编辑响应对象吗?

时间:2010-01-18 09:04:55

标签: ajax response

我的页面上有一个链接按钮,我从某个DMS系统下载文件,然后使用response.write将服务器上的文件压缩到客户端后发送文件。

但是由于页面被ajaxified,它会引发错误。

是否可以通过Ajax电话向客户端发送文件?

我正在使用Telerik RadAjax

3 个答案:

答案 0 :(得分:1)

没有理由请求带有AJAX回调的文件,因为下载文件不会刷新页面,因此用户不会丢失上下文,这通常是您更喜欢AJAX回调的原因。 / p>

根据您的意见,有两种方法可以解决这个问题:

  1. 您可以在从第二台服务器下载文件的同时写入响应流,从而在浏览器的打开/保存对话框中显示进度。
  2. 您可以将文件暂时存储在数据库/文件系统中的某个位置,并使用用户直接发出的第二个请求发送该文件。
  3. 第一个对我来说似乎更合理,因为你不必处理中间存储。

答案 1 :(得分:1)

不要使用Response.Write或Response.WriteFile来强制文件下载,因为在这种情况下,这根本没有帮助。

为了做你想做的事,将压缩文件保存在磁盘上并将用户重定向到download-file。您可以创建一个临时文件夹来保存您在运行中创建的压缩文件,并每隔一小时或任何此类预定义的时间间隔刷新它们。你需要从标准的回发后驱动的非ajaxed呼叫中调用它。这将保留国家。

Response.Redirect("path-file-to-download");
Response.End();

答案 2 :(得分:0)

您可以发送您喜欢的任何数据,您只需要能够在JavaScript中处理它。

JavaScript可以用压缩文件做很多事情(除非您想在JavaScript中查找或编写zip解压缩库)。