помогите с загрузкой картинки imageshack

M
На сайте с 20.08.2004
Offline
376
918

Вот такой код прекрасно работает на локальном сервере (правда под винду) и не работает ни на одном хостере.

<?php
function uploadToImageshack($filename, $vars, $fi) {

// print_r($fi['fileupload']['type']);
$ch = curl_init("http://www.imageshack.us/index.php");

// $post['cookie']='your cookie';
$post['xml']='yes';
$post['fileupload']='@'.$filename;
$post['rembar'] = intval($vars['rembar']) == 0 ? 1 : 0;
$post['optimage'] = $vars['optimage'];
$post['optsize'] = $vars['optsize'];

curl_setopt($ch, CURLOPT_URL, "http://www.imageshack.us/index.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 240);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect: '));
// curl_setopt ( $ch , CURL_HTTPHEADER , "Content-type: ".$fi['fileupload']['type'] );
// curl_setopt ( $ch , CURLOPT_HTTPHEADER , "Content-type: multipart/form-data" );



$result = curl_exec($ch);
echo "<br>result:<pre style='color:blue'>";
print_r(htmlentities($result));
echo "</pre>";
// exit;
curl_close($ch);

if (strpos($result, '<'.'?xml version="1.0" encoding="iso-8859-1"?>') === false) {
return null;
} else {
return $result; // XML data
}

}




//if(!isset($HTTP_POST_FILES['fileupload'])) {

//} else {

// $source = $HTTP_POST_FILES['fileupload']['tmp_name'];
// print_r($HTTP_POST_FILES);
// $dest = '/tmp/'.$HTTP_POST_FILES['fileupload']['name'];
// $dest = $_SERVER[DOCUMENT_ROOT].'forum/tmp/'.$HTTP_POST_FILES['fileupload']['name'];
// echo $zz = "/Library/WebServer/ua.org.pregnancy/htdocs/forum/tmp/ff2.jpg";
echo "<br>path:=".$zz = $_SERVER[DOCUMENT_ROOT]."/forum/tmp/ff1.jpg";
echo "<br>mktime:=".mktime();
// copy($source, $dest);
$xmlString = uploadToImageshack($zz, $HTTP_POST_VARS, $HTTP_POST_FILES);
// unlink($source);
// unlink($dest);

if ($xmlString) {

$xmlData = explode("\n", $xmlString);

foreach($xmlData as $xmlDatum){
$xmlDatum = trim($xmlDatum);
if($xmlDatum != "" && !eregi("links",$xmlDatum) && !eregi("xml",$xmlDatum)){
$xmlDatum = str_replace(">","<",$xmlDatum);
list($xmlNull,$xmlName,$xmlValue) = explode("<",$xmlDatum);
$xmlr[$xmlName] = $xmlValue;

}
}

if (empty($_POST['thumb']) || $xmlr['thumb_exists'] == 'no') {
$text = '';
} else {
$text = ' . ']';
}

echo "TRUE".$text;

} else {

echo "ERROR";
}
//}

?>


Результат домашнего выполенния скрипта

path:=D:/www/site.ua/forum/tmp/ff1.jpg
mktime:=1304919474
result:
<?xml version="1.0" encoding="iso-8859-1"?><links>
<image_link>http://img641.imageshack.us/img641/2197/ff1d.jpg</image_link>
<thumb_link>http://img641.imageshack.us/img641/2197/ff1d.th.jpg</thumb_link>
<ad_link>http://img641.imageshack.us/my.php?image=ff1d.jpg</ad_link>
<thumb_exists>yes</thumb_exists>
<total_raters>0</total_raters>
<ave_rating>0.0</ave_rating>
<image_location>img641/2197/ff1d.jpg</image_location>
<thumb_location>img641/2197/ff1d.th.jpg</thumb_location>
<server>img641</server>
<image_name>ff1d.jpg</image_name>
<done_page>http://img641.imageshack.us/content.php?page=done&amp;l=img641/2197/ff1d.jpg</done_page>
<resolution>240x350</resolution>
<filesize>19762</filesize>
<image_class>r</image_class>
</links>
TRUE

результат работы на сервере


path:=/usr/home/mylogin/domains/site.ua/public_html/forum/tmp/ff1.jpg
mktime:=1304919757
result:
<links>
<error id="wrong_file_type">Wrong file type detected for file ff1.jpg:application/octet-stream</error>
</links>
ERROR

ПОМОГИТЕ! Реально уже не знаю что и делать!

Спасибо.

отец сыночка, лапочки дочки и еще одного сыночка
[umka]
На сайте с 25.05.2008
Offline
456
#1

Видимо, ему не нравится, что при передаче файла "jpg" вы указываете тип "application/octet-stream" вместо положенного "image/jpeg".

Лог в помощь!
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#2

Wrong file type detected for file ff1.jpg:application/octet-stream

Какая фраза из этой ошибки вам не понятна ТС?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
M
На сайте с 20.08.2004
Offline
376
#3

Люди, скрипт работает на локальном хосте и не работает на сервере!

картинка одна и таже все одно и тоже

Miracle добавил 09.05.2011 в 12:20

LEOnidUKG:
Какая фраза из этой ошибки вам не понятна ТС?

упал человек в яму, что бы вылезти ему надо лезть. я спрашиваю как сделать так что бы вылезти. мне отвечают надо лезть..

по существу мне - не понятно как решить эту проблему, если у вас есть что-то что бы мне в этом помочь, буду признателен.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#4

// curl_setopt ( $ch , CURL_HTTPHEADER , "Content-type: ".$fi['fileupload']['type'] );

А пробовали раздокументировать?

[umka]
На сайте с 25.05.2008
Offline
456
#5

Из приведённого куска кода не совсем ясно, что именно делает скрипт.

Либо он заливает на фотохостинг просто локальный файл, либо он заливает файл, загруженный пользователем через форму.

Если первое, то скрипт должен по расширению файла брать соответствующий mime-type из массива, и передавать его.

Если второе, то можно полагаться на mime-type, который передан компьютером пользователя при загрузке.

M
На сайте с 20.08.2004
Offline
376
#6
LEOnidUKG:
/ curl_setopt ( $ch , CURL_HTTPHEADER , "Content-type: ".$fi['fileupload']['type'] );
[umka:
;8926434]Из приведённого куска кода не совсем ясно, что именно делает скрипт.
Либо он заливает на фотохостинг просто локальный файл, либо он заливает файл, загруженный пользователем через форму.

Если первое, то скрипт должен по расширению файла брать соответствующий mime-type из массива, и передавать его.
Если второе, то можно полагаться на mime-type, который передан компьютером пользователя при загрузке.

в оригинале пользователь заргужает и получает ссылку

но я упростил , и просто файл загружается с сервера.

все что закоментировано и даже больше я перепробовал перед тем как создать тему - не помогает...

еще раз повторяю - один и тот же скрипт, работает на локальной машине и н е работает на сервере... проблема явно в чем-то другом. пока не могу понять в чем

[umka]
На сайте с 25.05.2008
Offline
456
#7
Miracle:
в оригинале пользователь заргужает и получает ссылку
но я упростил , и просто файл загружается с сервера.

Ну вот и попробуйте прделоженный вариант.

Передайте картинку jpg и content-type: image/jpeg

M
На сайте с 20.08.2004
Offline
376
#8
[umka:
;8926743]Ну вот и попробуйте прделоженный вариант.
Передайте картинку jpg и content-type: image/jpeg

честно честно честно делал и это делал!!! не работает!

Miracle добавил 09.05.2011 в 17:46

Всем спасибо. РАзобрался!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий