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