2014-06-03 3 views
0

Я создаю приложение, которое позволит пользователям загружать некоторые pdf-файлы, но эти файлы хранятся на другом сервере, который защищен паролем, пароль известен. Каков наилучший способ передать эти файлы пользователю.PHP Загрузка файла с другого защищенного паролем сервера

MyAppIP/applicationfiles.php 
FilesIP/PDF-Files/file1.pdf <-- this is password protected, but I know the pass. 

Я думал о сохранении файлов на своем сервере первый, так как они имеют максимальный размер 100kb. Затем передайте их пользователю и снова удалите локальный файл, но я не совсем понял, как получить файл с другого сервера в первую очередь.
Как я могу получить файлы с другого сервера в php?

+0

http://mithunjj.com/download-remote-file-with-php-output-to-browser/ это работает, и я не знаю, почему, и это выглядит как большой недостаток безопасности. – kpp

ответ

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

Я принимаю этот ответ, но проблема только немного усложнилась, так как я должен выбрать определенный набор имен файлов из этого удаленного каталога. Не зная точное имя. Я знаю, что они начинаются с четырехзначного числа, которое связано с ID в базе данных, и заканчивается на .pdf, например 1234randomdateandname.pdf. Я попытался использовать glob ($ url. $ Id. "*. Pdf"), но glob не будет выглядеть в удаленных каталогах. Поэтому я просматриваю ftp-функции php. Наверное, я начинаю задавать другой вопрос, как только смогу, если я пока не смогу понять. – kpp

0

Если удостоверение является основного HTTP и вы установили локон, вы можете использовать это:

$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); 
Смежные вопросы