web如何实现"文件下载后就删除"

起因:web站点提供的下载文件都是客户端请求时服务器临时生成的文件,下载过后就会失效,想减轻服务器存储负担.

想实现的效果:

1.文件下载完成后执行删除
2.如果下载过程被终止,则终止后执行删除操作

请问要如何实现这种效果.

阅读 10k
10 个回答

不能在服务器端直接删除么?

这个问题稍微有点复杂了吧,首先你得知道这个文件是什么时间下载完,从你现在的代码来看直接location.href='下载地址'? 你如何确保文件已经被下载完成了呢?

文件小的话可以直接用xhr2下载二进制数据,load完之后再给服务器一个ajax。
大文件还可以用fileSystem,用来实现分片下载、断点续传之类的高级功能。

当然如果LZ要是做后端的,不熟悉这些的话,可能还是服务器判断更简单点吧

有一个叫做callback的东西.............

操作数据库都是后端,JS只不过是进行操作反馈罢了,想的真多。

javascript是客户端,客户端的程序是不能读写任何文件的,如果真的能读写硬盘上的文件,我写个恶意程序你的电脑就崩溃了,或者可以获取你的隐私信息,获取你身份信息,你女友的视频。。。

很简单,不是用a链接提供下载,而是用服务端程序提供下载,下载完删除即可。当然,这是服务端程序。

首先,你不知道是不是真的下载完这个文件了

想到这个问题了 类似的问题是如何检测一个文件被开始下载 和结束
那么 其实这个问题本身就不需要回答 因为用户的session总有超时的时候 1个文件我给你1天时间下载 1天之后起个计划任务把他删掉就完了么
当然非要解决不是没有,如果是同域的时候,可以定期去刷服务端一个特定url,然后在文件下载那个请求中,加入特定的cookies,前端只要刷这个cookies就知道文件开始下载了没有。
类似的据说可以检测文件下载结束,不过我没试过,这也是stackoverflow上给的答案。

直接保存在流里面,传给浏览器下载。

推荐问题