Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
PHP: отправить файл, скачанный с сервера1, post запросом на сервер2?
Просмотров: 331
 
Ответов: 2
Итак, есть к примеру картинка на сервере1 server1.ru/file1.jpg
Необходимо отправить этот файл на сервер2 (server2.ru) POST запросом.
Как сделать это максимально быстро и легче?
Мое предложение:
Для скачивания file1.jpg используем:
$fp = @fopen('http://server1.ru/file1.jpg', "rb");<br/>
$fd = @fopen('tmp/tmp_filename', "w");<br/>
if ($fp && $fd) {<br/>
while (!feof($fp)) {<br/>
$st = fread($fp, 4096);<br/>
fwrite($fd, $st);<br/>
}<br/>
}<br/>
@fclose($fp);
Затем используем CURL для отправки файла tmp/tmp_filename на сервер2.
Возможно есть способ быстрее?
ps: вот было бы здорово сделать все вышеперечисленное на стороне клиента с помощью какаго-нибудь jQuery и не грузить сервер этой ерундой =)
$fp = @fopen('http://server1.ru/file1.jpg', "rb");<br/>
$fd = @fopen('tmp/tmp_filename', "w");<br/>
if ($fp && $fd) {<br/>
while (!feof($fp)) {<br/>
$st = fread($fp, 4096);<br/>
fwrite($fd, $st);<br/>
}<br/>
}<br/>
@fclose($fp);
// читаем файл
$fileString = file_get_contents('http://server1.ru/file1.jpg');
// подготавливаем POST
$params = array('http' => array(
'method' => 'POST',
'content' => $fileString
));
$context = stream_context_create($params);
// посылаем POST, получаем отклик
if($remote = @fopen('http://server2.ru/filesend.php', 'rb', false, $context)){
$response = @stream_get_contents($remote);
}
Первоисточник метода: «HTTP POST from PHP, without cURL» (автор Wez Furlong, код опубликован 15 ноября 2006 г., модернизирован 23 мая 2010 г.).
// читаем файл
$fileString = file_get_contents('http://server1.ru/file1.jpg');
// подготавливаем POST
$params = array('http' => array(
'method' => 'POST',
'content' => $fileString
));
$context = stream_context_create($params);
// посылаем POST, получаем отклик
if($remote = @fopen('http://server2.ru/filesend.php', 'rb', false, $context)){
$response = @stream_get_contents($remote);
}
Интересно, что сначала упоминается два сервера и взаимодействие между ними. А в конце вспоминается про какой-то «клиент».
Может вообще не надо с этими запросами мучиться. Отдать второму серверу-рецепиенту ссылку на картинку — пусть он сам скачает. Так не будут нагружаться скрипты сервера-донора (если давать прямую ссылку на картинку), и можно на втором сервере организовать очередь закачки картинок с первого сервера, если таких картинок, одновременно загружаемых, будет очень много.
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться