我正在使用jquery $ .post请求来生成gpx文件。然后,post请求返回文件保存的唯一ID。现在我想下载此文件,但是将文件的名称从唯一ID更改为用户在输入div中指定的名称。
我一直在研究,似乎使用其他发布请求来发送名称数据是不可能的。
我无法使用location.href,因为文件名需要更改,我需要使用下载请求发送新名称。
我该如何解决这个问题?
答案 0 :(得分:1)
我无法使用location.href,因为文件名需要更改,我需要使用下载请求发送新名称。
是的,你可以。
只是不发送文件名位置,而是发送将检索正确的文件的PHP脚本的位置,无论其名称是什么(例如,唯一的),然后检索正确的本地名称(例如,从$ _SESSION),并发送适当的标题:
header('Content-Type: application/pdf;charset=UTF-8');
header('COntent-Disposition: attachment; filename="MyStrangeName.pdf"');
header('Content-Length: ' . filesize($realFile));
readfile($realFile);
这也允许您通过$ _SESSION建立下载器真正有权下载文件。
对于非常大的文件数量,我建议你采用uniquename加文件树解决方案,例如鱿鱼,
uniqueid = 4fd3ea17 // Unique file ID
file = downloads/4f/d3/4fd3ea17
因此每个目录最多只包含65536个文件。
然后在mod-rewrite的帮助下你可以发送
Location: http://www.yoursite.com/download/4fd3ea17
(不要忘记拒绝直接访问和下载目录的索引)
答案 1 :(得分:-2)
您可以使用php rename()函数。使用另一个发布请求,您可以传递用户选择的唯一名称和名称。您重命名该文件并将其名称作为响应发送。然后使用jQuery,您可以使用响应执行任何操作。所以它是: