PHP curl проблеми с fopen срещу $_FILES[photo_file][tmp_name]

Имах работни отношения с Java сървър и PHP сървър, използвайки curl от php.

Използвайки curl, изпратих масив с данни за изображение и някои низови стойности.

В PHP изображението беше взето директно (tmp съхранение) от HTTP POST формуляр и успешно поставено в масива. Но сега трябва първо да move_uploaded_file към определена директория и да я прочета обратно с fopen в друг PHP документ, който използва curl.

Единствената разлика е, че използвах $_FILES["photo"]["tmp_name"], а сега използвам fopen. Код:

// $image = $_FILES["photo"]["tmp_name"]; Had success with this one from FORM POST
// $filename = basename($_FILES['photo']['name']);

$filename = $_POST["filename"]; // file name from ajax post

$image = fopen('C:\\xampp\\htdocs\\app\\uploads\\'.$filename, "rw"); // the sinner?

$data = array(
    'uploaded_file' => '@' . $image . ';filename=' . $filename,
);
....
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url); // the Java web service URI
curl_setopt($c, CURLOPT_HEADER, false);
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $data);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($c);

грешка:

Erreur curl : couldn't open file "Resource id #3" 
Array
(
     [uploaded_file] => @Resource id #3;filename=480x_13197743.jpg
)

РЕДАКТИРАНЕ:

Отпечатах масива от работещото решение и той сочи към файла/ресурса по различен начин:

Array
(
    [uploaded_file] => @C:\xampp\tmp\php20EA.tmp;filename=magn.png
)

Или по-добре казано, той има само низ от пътя на файла. Добре, това го поправи, използвайки само пътя на файла и пренебрегвайки всяко копие на двоични данни. Отговори на въпроса ми =|


person gorn    schedule 27.03.2012    source източник
comment
Знаете ли, че след изпълнение на php скрипт файлът $_FILES[photo][tmp_name] ще бъде изтрит. Трябва да го преместите на друго място.   -  person Matej Baćo    schedule 27.03.2012
comment
Какво искате да поставите в масива? Име на файл? Или самия файл (в някакъв кодиран формат)? С fopen получавате дръжка обратно.   -  person initall    schedule 27.03.2012
comment
Това казах с move_uploaded_file. Чудя се дали има някаква разлика в кодирането на файла или нещо, което не е подходящо за използване с масив, безсмислен банкомат.   -  person gorn    schedule 27.03.2012
comment
@initall, самото съдържание на файла   -  person gorn    schedule 27.03.2012


Отговори (1)


Вижте примера за „Качване на файл“ на http://php.net/manual/en/function.curl-setopt.php

Просто посочете пътя на файла във вашия масив, а не манипулатор на ресурс, който fopen връща.

person initall    schedule 27.03.2012