Как отправить файл сразу в объектное хранилище cURL PHP?
С формы файл загружается на сервер(ajax), после заливается в объектное хранилище Selectel(PUT cURL php). Подскажите, можно ли избежать загрузки файла на промежуточный сервер и загружать файл с формы сразу cURL'ом в хранилище? Спасибо!
$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.selcdn.ru/v1/SEL_1337/test/Eprtst1.mp4",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => array('
' => new CURLFILE('test/upload/5ec46a241e58b.mp4')),
CURLOPT_HTTPHEADER => array(
"X-Auth-Token: 478493248"
),
));
Ответы (1 шт):
Автор решения: Daniel Protopopov
→ Ссылка
Если использовать NGINX с проксированием запроса, указав необходимые заголовки и настроив его соответствующим ссылке образом, то можно это сделать как указано тут
Пример:
location / {
proxy_pass http://получатель-файла/;
proxy_redirect off;
proxy_buffering off;
proxy_request_buffering off;
allow all;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Auth-Token 478493248
client_body_buffer_size 0;
client_max_body_size 0;
proxy_max_temp_file_size 0;
proxy_read_timeout 18000;
proxy_send_timeout 18000;
gzip off;
}
И соответственно настроки сервера:
client_max_body_size 0;
proxy_http_version 1.1;
proxy_request_buffering off;
Которые по сути должны быть не нужны так как эти параметры уже есть выше.