2014-01-27 6 views
0

Я хочу загрузить файлы на удаленный сервер. Для этого я прочитал, что мы могли бы использовать метод put для загрузки файла.Загрузка файла с использованием метода Put Http

Пользователю будет предоставлена ​​форма, в которой они могут загрузить один или два файла. Этот файл должен быть загружен на другой сервер.

Код я использовал для загрузки файлов с помощью HTTP положить следующим образом:

$curl = curl_init($api_url); 
$data = array(
    'filename' => 'filename.html', 
); 
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); 
// Make the REST call, returning the result 
$response = curl_exec($curl); 
if (!$response) { 
    die("Connection Failure.n"); 
} 

запрос пут отправляется, но файл не получает загружены по мере необходимости. Имя файла идет как данные. Файл filename.html находится в корневом каталоге веб-сервера. Как загрузить файл?

+0

Вам не хватает 'curl_setopt ($ curl, CURLOPT_PUT, 1);'? –

+0

Если я добавлю эту строку, тогда массив данных в ответе будет пустым, и файл не будет загружен. Хотя запрос на отправку отправляется. – user3230561

ответ

0
  1. Похоже, что вы не отправили содержимое файла.
  2. Принятие вашего запроса в виде загрузки полностью зависит от сервера. Попросите администратора сервера загрузить файл или прочитать документ API для сервера, если он предоставлен.
+0

Да .. У меня раньше не было содержимого файла в коде. Теперь я отправляю содержимое файла с помощью file_get_contents ($ _ FILES ['file2'] ['tmp_name']); и я также выполняю base64_encode() в контенте. – user3230561

+0

@ user3230561 'file_get_contents ($ _ FILES ['file2'] ['tmp_name']);' предназначен для чтения содержимого из файла, загруженного клиентом, а не для отправки файл. И '$ _FILES' является [" Ассоциативный массив элементов, загруженных в текущий скрипт с помощью метода HTTP POST "] (http://www.php.net/manual/en/reserved.variables.files.php). Поэтому я думаю, что это не работает для метода PUT. – npcode

+0

Я извлекаю содержимое, а затем отправляю данные с помощью переменной массива $ data. Также я удалил функцию http_build_query, и я выполняю json-код в переменной $ data. Используя этот метод, я могу отправить содержимое файла на api – user3230561

Смежные вопросы