我正在构建一个允许用户下载某些pdf文件的应用程序,但这些文件存储在受密码保护的其他服务器上,密码已知。 将这些文件传递给用户的最佳方法是什么。
MyAppIP/applicationfiles.php
FilesIP/PDF-Files/file1.pdf <-- this is password protected, but I know the pass.
我正在考虑首先将文件保存在我自己的服务器上,因为它们的最大大小为100kb。然后将它们传递给用户并再次删除本地文件,但我还没有完全弄清楚如何从其他服务器获取文件。
那么如何从php中的不同服务器获取文件?
答案 0 :(得分:3)
您可以使用CURL从受保护服务器下载文件。 CURL还支持许多授权方法。 http://www.php.net/manual/en/function.curl-setopt.php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'FilesIP/PDF-Files/file1.pdf');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "Login:Password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$file = curl_exec($ch);
curl_close($ch);
file_put_contents('/var/www/file.pdf', $file);
// return download link to user
// <a href="file.pdf">Download</a>
答案 1 :(得分:0)
如果auth是基本http 并且你已经安装了curl,你可以使用它:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);
curl_close($ch);