【问题标题】:Save a file to the local server that has a force download header将文件保存到具有强制下载标头的本地服务器
【发布时间】:2011-07-06 04:07:16
【问题描述】:

我正在尝试从强制通过浏览器下载的远程服务器“复制”一个文件。远程文件输出的头部如下:

HTTP/1.1 200 正常
服务器:nginx
日期:格林威治标准时间 2011 年 3 月 1 日星期二 00:19:21
内容类型:application/txt
内容长度:170783
最后修改时间:2011 年 3 月 1 日星期二 00:00:43 GMT
连接:关闭
内容处置:附件;文件名="titles.txt"
过期:2011 年 3 月 1 日星期二 02:19:21 GMT
接受范围:字节

我需要某种方式来覆盖附件 Content-Disposition 以便 php 可以将文件复制到本地服务器。要么这样,要么以其他方式将文件从远程服务器下载到本地。

要下载的文件是一个简单的文本文件,通常会显示在浏览器中,但是我需要 PHP 在本地“下载”它作为一种缓存。

我环顾了这个网站,但我发现的尝试都没有奏效>_

有什么建议吗?!

提前致谢, 影子木偶

【问题讨论】:

  • 浏览器发送内容处置的事实并不会阻止您获取数据,哈哈

标签: php header


【解决方案1】:

我不太明白。您希望服务器保存文件,但它使用浏览器? 以下应该做你所追求的

$file = 'www.exmple.com/mytext.txt';

// 打开文件获取现有内容

$current = file_get_contents($file);

// 将内容写回文件

file_put_contents("user/path/to/file/mytext.txt", $current);

【讨论】:

  • 不,请参阅...该文件位于远程服务器上,并且它正在输出一个标题,该标题迫使浏览器在您访问该 url 时显示另存为对话框。我需要它在窗口中输出而不是显示该对话框
  • 你想复制这个该死的远程文件吗?只需正常阅读!卫生部
【解决方案2】:

即使服务器发送内容处置,file_get_contents 也可以工作。

检查您的 PHP 版本及其错误。

【讨论】:

  • 5.2.14 版,我不知道,但它不适用于该站点...也许它背后还有其他保护措施?有没有办法明确拒绝 php 获取它?
  • 他们可以添加的唯一“保护”是检查请求标头。尝试添加一个像 User-Agent 这样的 IE 一个来自他们网站的 Referer 或类似的东西
  • 我还要补充一点:从其他网站窃取文件和内容是不合法的
  • LOL 我不是在窃取内容。它是可公开下载的...我只需要 PHP 即可获得它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多