Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача POST и файла с помощью CURL
 
 автор: dasha   (11.01.2007 в 16:14)   письмо автору
 
 

Добрый день!
Никак не получается переслать файл и данные постом с помощью CURL
Скрипт следующего содержания:
$url = "localhost/test.php";
$params = "var1=2&file=@test.txt";
$ch = curl_init();

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
if (curl_errno($ch)) {
print curl_error($ch);
}
$xml = curl_exec($ch);
curl_close($ch);
Файл test.txt находится в текущей директории.

Читала в документации, там написан именно такой способ передачи, но файл точно не передается.
Была на многих форумах, но ответа не нашла.
Помогите, пожалуйста

   
 
 автор: ddhvvn   (11.01.2007 в 16:30)   письмо автору
 
   для: dasha   (11.01.2007 в 16:14)
 

А никакой ошибки не выводится?

   
 
 автор: Dasha   (11.01.2007 в 16:32)   письмо автору
 
   для: ddhvvn   (11.01.2007 в 16:30)
 

нет не выводится. Т.е. когда я передаю обычные параметры, всё чисто отрабатывает, передается то, что нужно. А когда пытаюсь передать файл (указывая его @), то файл не передается, никаких ошибок не возвращается

   
 
 автор: Trianon   (11.01.2007 в 16:34)   письмо автору
 
   для: dasha   (11.01.2007 в 16:14)
 

параметры при загрузке файла на сервер должны передаваться не в виде urlencoded, а как multipart/form-data.

В мануале http://ru.php.net/curl_setopt
(точнее в комментариях к нему) есть два примера.
27-Aug-2002 01:31
22-Sep-2001 08:52

   
 
 автор: Dasha   (11.01.2007 в 16:37)   письмо автору
 
   для: Trianon   (11.01.2007 в 16:34)
 

Не работает! Эти два примера я посмотрела в первую очередь

   
 
 автор: ddhvvn   (11.01.2007 в 16:41)   письмо автору
 
   для: Dasha   (11.01.2007 в 16:37)
 

Значит проблема с Вашим сервером (Apache или PHP)

   
 
 автор: Dasha   (11.01.2007 в 17:09)   письмо автору
 
   для: ddhvvn   (11.01.2007 в 16:41)
 

Тестировала еще на двух серверах, там тоже не работает, думаю , что проблема не в них!
Читала несколько сообщений на форумах о том, что пример из мануала не работает. Причина в чем-то другом

   
 
 автор: ddhvvn   (11.01.2007 в 17:14)   письмо автору
 
   для: Dasha   (11.01.2007 в 17:09)
 

Ну если не заработает, попробуйте "схитрить" - читать файл с помощью file_get_contents и передавать уже эти данные.
Хотя я не уверен, что будет работать на 100% :))

   
 
 автор: Trianon   (11.01.2007 в 17:24)   письмо автору
 
   для: Dasha   (11.01.2007 в 16:37)
 

обратите внимание на полный путь к передаваемому файлу.

<?php 
$url 
"localhost/test.php";
$params = array(
    
"var1"=>'2'
    
'file' => '@/home/localhost/www/test/test.txt'
);
$ch curl_init();

curl_setopt ($chCURLOPT_SSL_VERIFYPEER0);
curl_setopt ($chCURLOPT_URL$url);
curl_setopt ($chCURLOPT_POST1);
curl_setopt ($chCURLOPT_POSTFIELDS$params);
curl_setopt ($chCURLOPT_RETURNTRANSFERtrue);
if (
curl_errno($ch))
  print 
curl_error($ch);

$xml curl_exec($ch);
if (
curl_errno($ch))
  print 
curl_error($ch);
curl_close($ch);

print_r($xml);
// upload filename1
?>

Этот вариант у меня заработал.

   
 
 автор: Dasha   (12.01.2007 в 12:30)   письмо автору
 
   для: Trianon   (11.01.2007 в 17:24)
 

Спасибо большое, Trianon! Все вчера успешно решилось с Вашей помощью!
Причина была в том, что $params я передавала строкой, а не массивом и указывала не полный путь к файлу!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования