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

Форум PHP

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

 

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

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

тема: Загрузить бинарный файл через CURL методом POST
 
 автор: Eugene77   (29.03.2010 в 16:10)   письмо автору
 
 

Cкорее всего надо в CURLOPT_HEADER указать
какое-то число, чтобы бинарник загрузился, но какое?

  Ответить  
 
 автор: Trianon   (29.03.2010 в 16:14)   письмо автору
 
   для: Eugene77   (29.03.2010 в 16:10)
 

процедура описанна в user contributed comments мануала с подробными примерами.

  Ответить  
 
 автор: Eugene77   (29.03.2010 в 17:58)   письмо автору
 
   для: Trianon   (29.03.2010 в 16:14)
 

А где их искать?

  Ответить  
 
 автор: Eugene77   (29.03.2010 в 18:17)   письмо автору
 
   для: Trianon   (29.03.2010 в 16:14)
 

Я нашёл вот такой пример:
 
<?php
//инициализируем сеанс
$curl curl_init();
//уcтанавливаем урл, к которому обратимся
curl_setopt($curlCURLOPT_URL,
'http://www.example.loc/test.php');
//включаем вывод заголовков
curl_setopt($curlCURLOPT_HEADER1);
//передаем данные по методу post
curl_setopt($curlCURLOPT_POST1);
//теперь curl вернет нам ответ, а не выведет
curl_setopt($curlCURLOPT_RETURNTRANSFER1);
/*переменные, которые будут переданные по методу post
Перед именем файла ставится @
*/
curl_setopt($curlCURLOPT_POSTFIELDS,
array(
'name'=>urlencode('John'),
'surname'=>urlencode('Smith'),
'my_file'=>'@'.dirname(__FILE__).
DIRECTORY_SEPARATOR.'test_file.jpg'
)
);
//я не скрипт, я браузер опера
curl_setopt($curlCURLOPT_USERAGENT'Opera 10.00');
$res curl_exec($curl);
//проверяем, если ошибка, то получаем номер и сообщение
if(!$res){
$error curl_error($curl).'('.curl_errno($curl).')';
echo 
$error;
}
//если не ошибка, то выводим результат
else{
echo 
$res;
}
curl_close($curl);
?>


Но
print_r($_FILES);

даёт:

Array
(
    [file1] => Array
        (
            [name] => readonly.txt
            [type] => text/plain
            [tmp_name] => Z:\tmp\php390.tmp
            [error] => 0
            [size] => 381
        )

)


Хотя автор утверждает, что его скрипт пересылает даже картинку

  Ответить  
 
 автор: Trianon   (29.03.2010 в 23:40)   письмо автору
 
   для: Eugene77   (29.03.2010 в 18:17)
 

Так если name = readonly.txt , то чего еще Вы хотите от type?

  Ответить  
 
 автор: Eugene77   (30.03.2010 в 18:46)   письмо автору
 
   для: Trianon   (29.03.2010 в 23:40)
 

>Так если name = readonly.txt , то чего еще Вы хотите от type?
Что ж он по расширению файла что ли, тип данных определяет?
А если будет неизвестное раширение или несоответствие расширения и типа?
Я бы хотел где-то явно указать octet-stream
Или что там принято указывать для бинарников.

  Ответить  
 
 автор: Eugene77   (31.03.2010 в 12:26)   письмо автору
 
   для: Trianon   (29.03.2010 в 23:40)
 

Я пробовал с mp3 файлом.
Получаю битый файл и ошибку.
Array
(
    [file1] => Array
        (
            [name] => 00.mp3
            [type] => 
            [tmp_name] => 
            [error] => 1
            [size] => 0
        )

)

А где есть документация да ещё и с обилием (работающих ) примеров, я так и не понял.

  Ответить  
 
 автор: Тень*   (31.03.2010 в 12:59)
 
   для: Eugene77   (31.03.2010 в 12:26)
 

А ты почитай, что такое error == 1

  Ответить  
 
 автор: Eugene77   (31.03.2010 в 17:14)   письмо автору
 
   для: Тень*   (31.03.2010 в 12:59)
 

Я что-то никак не найду нормальной документации по CURL. и по POST
Подскажите ссылочку на нормальныую документацию, то что мне попадается - очень уж поверхностное.

  Ответить  
Rambler's Top100
вверх

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