2013-04-03 2 views
-1

Я загрузки изображения в imagezilla.net используя следующий кодENCTYPE локон PHP

<form target="my_iframe" action="http://imagezilla.net/api.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file" accept="image/x-png, image/gif, image/jpeg" /> 
    <input type="hidden" name="apikey" value="" /> 
    <input type="hidden" name="testmode" value="1" /> 
    <input type="submit" value="Upload Image" /> 
</form> 

Это работает хорошо, но я не есть способ получения результатов назад из-за правил Междоменное, так я пытаюсь поставить его в локон PHP

<?php 
$ch = curl_init("http://imagezilla.net/api.php?file='C:\Anti-Backlash-Nut.jpg'&apikey=''&testmode=1"); 
$header = array('Content-Type: multipart/form-data'); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch);  
curl_close($ch); 
echo $output; 
?> 

(Вторая серия кода имеет файл уже заключенный только как быстрый тест)
я не могу получить ENCTYPE в коде PHP для работы правильно (строка $ header = ...), поскольку он просто возвращается, поскольку ни один файл не загружен. Что я делаю не так?

ответ

0

Вы используете метод GET для загрузки файла ... но файл всегда получает загружены с помощью POST .. Для этого нужно поместить @ перед имя файла, которое вы хотите отправить в качестве сообщения.

посылая @ перед путем к файлу убеждается, что Curl отправляет файл как часть «многочастные/фасонные данные» пост

Попробуйте

<?php 
$ch = curl_init("http://imagezilla.net/api.php?apikey=''&testmode=1"); 
$post = array(
    "file"=>"@C:\Anti-Backlash-Nut.jpg", 
); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch);  
curl_close($ch); 
echo $output; 
?> 
+0

Мне пришлось изменить заголовок CURLOPT_HTTPHEADER, $ CURLOPT_HEADER, 0, когда он вернулся с ошибкой, но теперь, когда его успешный выход пуст, если есть проблема, то он отображает результаты – user170324

+0

@ user170324 Это может быть связано с тем, что api не может ничего возвращать при успешной загрузке – alwaysLearn

+0

, когда я использую метод формы, он возвращает путь к файлу сервера для изображения, но он возвращает его как xml, мне нужно будет изменить заголовок обратно на httpheader и добавить тип контента в xml? – user170324

1

Это, как вы загрузите файл:

<?php 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    $post = array(
     "file"=>"@/path/to/myfile.jpg", 
    ); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
    $response = curl_exec($ch); 
?> 
+0

Я хотел бы использовать этот код, если я не был» t ограничено пропускной способностью на моем собственном сервере, поэтому, почему я использую imagezilla, спасибо за ваш вклад, сохранит его как резерв, если это не проблема – user170324

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