我不确定如何以最好的方式做到这一点(只是 PHP、PHP + javascript ......):
我必须允许用户发送一些生成报告文件的表单数据,该报告文件与之前生成的其他文件一起列出,每个文件都有一个下载链接。我想允许用户选择在生成后保存它(内容处置标头)。如果他们不想要,该链接仍将在列表中可用。
因此,我尝试通过发送“Content-Disposition: attachment” header来做到这一点。一切都很好(文件存储在服务器中,以便从上述链接进一步获得,它也被发送给用户,以便他们可以立即将其存储在他们的系统中)。问题是报告列表不会用新报告更新,因为我无法同时在响应中获得刷新的 HTML(可以吗?)。
我也尝试过发送Location 标头,但这似乎破坏了以前的功能。
你可能认为我是个白痴,但为了在发送表单后在列表中显示新创建的文件,我还尝试使用 javascript 而不是 Content-Disposition 标头,这样一旦创建了文件,脚本调用 window.open(),但这导致在浏览器中打开文件(CSV 文件),因为它是:纯纯文本。我想到的另一种选择是首先使用新创建的报告提供 HTML,再加上一个通过 ajax 对服务器进行第二次调用的脚本,然后 PHP 这次将带有文件内容的 Content-Disposition 标头发送回。但这对我来说似乎太扭曲了。还是在单独的用户交互中做到这一点的最好和最常见的方式?
你怎么看?