Добрый день. Есть задача отправить файл методом put с определенными заголовками. Делаю так:
$ch = curl_init();
$fp = fopen($file_path, 'r');
curl_setopt($ch, CURLOPT_URL, 'http://domain/folder/file.php');
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, $file['size']);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_UPLOAD, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Date:'.date('c'),
'Content-MD5:'.$file['hash'],
'X-Upload-Filename:'. $file['fileName'],
));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_USERPWD,$login.":".$pass);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Формируется адекватный запрос вида:
PUT /folder/file.php HTTP/1.1
Host: domain
Date: 2015-08-28T09:41:49+04:00
Content-Length: 198284
Content-MD5: ea200caec1ed9ef712fddafe4e2361e4
X-Upload-Filename: file_name.ext
Но сервер отвечает:
HTTP/1.1 400 Bad Request
Пробовал слать файл на наш сервер, там все ок, файл успешно отправляется и принимается.
Написал в тех поддержку, сказали что запрос должен иметь такой вид:
PUT http://domain/folder/file.php HTTP/1.1
Host: domain
Date: 2015-08-28T09:41:49+04:00
Content-Length: 198284
Content-MD5: ea200caec1ed9ef712fddafe4e2361e4
X-Upload-Filename: file_name.ext
Хоть я не совсем уверен в адекватности ответа тех.поддержки, но тем не менее задам вопрос:
Как сформировать запрос вида "PUT
domain/folder/file.php HTTP/1.1" ?