2010-02-19 69 views
0

下面是我正在做的事情:我正在制作一个包含测试的自定义文本文件。这个测试对用户来说是独一无二的,我不希望我的服务器堆叠所有这些文本文件。Ajax/jQuery查找用户是否完成下载

有没有一种方法可以使用Ajax/JavaScript/jQuery来查找用户是否已经完成了下载,并且他们是否已经获得了返回值(如果完成则返回1),这样可以将响应发送回PHP文件,它可以从服务器上删除该文件(实时类似)?

我知道有很多方法可以使用PHP来做到这一点。有点像在用户注销时运行清理等等,但我想尝试使用上面的方法,因为它可能有许多其他应用程序可能很酷使用。我尝试了大多数搜索引擎,但他们没有接近我需要的东西。

回答

1

为什么你需要将它们存储在一个文件中?只需使用PHP脚本或创建测试并将其直接输出给用户即可。这就是下载完成后它会被删除的方式。

+0

这是最好的办法。您要使用的是Content-Disposition标题。有一个关于头文件函数的PHP文档的例子:http://php.net/manual/en/function.header.php – 2010-02-19 20:02:38

0

如果这很重要,您可能希望用户使用下载文件的散列返回到您的服务器。如果哈希值匹配,你知道两件事情:
1.用户下载文件成功
2.现在确定要删除的文件

+0

不同意这个。很少有人熟悉哈希文件。我甚至不确定是否每个人都安装了这个软件。 – 2010-02-19 20:03:53

+0

我可能误解了这个问题。如果用户需要下载文件到光盘,我的解决方案不好。但是,如果只需下载“测试”(如在浏览器中查看),则可以使用JavaScript中的哈希函数,而不需要任何已安装的程序。 (上面的问题只说明测试存储在服务器上的文本文件中,而不是如何由客户端查看)。 – MyGGaN 2010-02-21 09:51:35

0

那么它是非常简单的。我不知道如何让PHP网页将自己发送给用户,而不是让PHP创建文本文件并强制将其发送给用户。这造成了在临时文件夹中有这么多文本文件的问题。

现在,如果测试需要说每个具有文本或HTML格式文件的15章,那么脚本将整齐地压缩所有这些文件并将它们发送给用户。如果用户完成下载,再次出现同样的问题我试图获取任何类型的脚本以临时目录中的某些实时删除临时zip或文本文件。

如果我可以MD5使用JavaScript下载的文件我很欢迎它,这将是一个黑客解决方案的问题,但JavaScript将如何访问用户的下载文件夹的根访问权限?如果我没有弄错,那里有安全问题。希望这有助于更多地回答这个问题。

0

我有一个很好的解决方案,为您在这里使用我创建的jQuery File Download plugin。它允许您获得执行Ajax文件下载(实际上不可能)的行为,并且完成成功和失败回调。简而言之,您可以使用Success回调(表示文件下载成功)来执行Ajax回发服务器以删除文件。查看blog post,查看如何使用Success回调选项或demo的示例,该示例在显示模式的上下文中使用这些回调来通知用户发生了什么。