【问题标题】:PHP download file from remote server that's using ASP scriptPHP 从使用 ASP 脚本的远程服务器下载文件
【发布时间】:2019-06-18 09:56:48
【问题描述】:

我正在尝试运行我的 php 脚本以从远程服务器下载文件。当远程 url 直接指向文件时,我的脚本可以正常工作,例如“http://example.com/files/file.pdf”。

问题是,大多数文件都在 ASP 服务器上,我没有直接指向文件路径的 url。相反,ASP 服务器正在运行脚本来下载文件。这些网址是这样的:“http://example.com/files/GetFile.aspx?Id=2722&Autoresolve=True”。

所以当我尝试读取 ASP 服务器的文件内容时,我会得到页面的文字标记。

这是我目前的代码:

$url = 'example.com/file.pdf';
$uploadfile = 'myserver.com/file.pdf';
$contents = file_get_contents($url);
$savefile = fopen($uploadfile, 'w');
fwrite($savefile, $contents);
fclose($savefile);

当目标文件由脚本提供服务时,我似乎无法在网上找到任何示例。

这可能吗?我需要注意什么?

【问题讨论】:

    标签: php curl download


    【解决方案1】:

    很可能意味着您需要在尝试下载之前进行 cookie 会话。有时您甚至必须在实际下载之前发起下载请求并获取唯一的下载 url。有时您甚至必须在进行实际下载之前登录。

    您可以使用 Fiddler 代理查看您的浏览器发出的下载请求(大多数浏览器(至少 FireFox 和 Chrome)很难查看文件下载请求,因此需要 Fiddler 代理,即使使用内置 -在开发工具中),查找 cookie 会话 ID 或外观独特的令牌,有时它们在 cookie 中(如 PHPSESSID),有时它们在 url 中(如/getFile.asp?id=123&token=qawsedrfgvbhnjm),有时它们在HTTP 标头(如X-download-token: awsxdcfgbhn

    .. 但由于您没有分享您尝试下载的实际网站,因此这里没有人可以准确地告诉您您的特定网站需要什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多