【问题标题】:File Download Callback文件下载回调
【发布时间】:2011-10-20 20:28:27
【问题描述】:

我的站点中有一个页面,它创建一个 .doc 文件并让用户下载它。我希望能够在用户下载该文件后从服务器中删除它。

有什么方法可以告诉浏览器调用我编写的 JavaScript 回调函数(这样我就可以使用 ajax 并删除文件),或者有什么其他方法让我知道何时删除文件?

【问题讨论】:

  • 没有办法可靠地做到这一点,AFAIK。最好的办法是定期清理服务器上的临时文件。
  • 您也可以在下载完成后,在传输文件的代码之后立即在服务器上执行此操作。
  • @Bipins 我怎么知道下载何时完成?
  • 你甚至需要创建文件(在磁盘上)吗?您可以在内存中创建它并将其流式传输到客户端吗?如果没有,用户如何下载文档...通过在文档创建后的某个时间点击链接?
  • 您是否使用一些代码添加标题作为应用程序/八位字节流式传输文件。如果没有,那么您如何发送文件?通过直接链接?

标签: javascript download


【解决方案1】:

不,没有。您可以通过服务器端脚本(PHP、Rails 等)传递文件,然后将其删除,或者,如果您的网络服务器使用 linux 或其他 unix 运行,则在下载开始后将其删除。在 thouse 平台上,文件在最后一个进程关闭它的句柄后被真正删除,因此即使您在用户仍在下载文件时删除文件,用户也可以继续这样做。

【讨论】:

  • 遗憾的是,我的服务器使用的是 windows,不过是不错的 Linux 解决方案。
【解决方案2】:

从服务器流式传输文件后,您可以删除它们。您在服务器端使用什么。例如在 aspx 中,http://forums.asp.net/p/1204802/2109808.aspx

  private void fileDownload(string fileName, string fileUrl)
    {
        Page.Response.Clear();
        bool success = ResponseFile(Page.Request, Page.Response, fileName, fileUrl, 1024000);
        if (!success)
            Response.Write("Downloading Error!");
        else
       // you can delete here
        Page.Response.End();
    }

【讨论】:

    猜你喜欢
    • 2012-08-14
    • 2020-06-20
    • 2011-05-20
    • 2017-03-08
    • 2016-07-04
    • 2017-01-22
    • 2016-08-19
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多