Имах работни отношения с 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
)
Или по-добре казано, той има само низ от пътя на файла. Добре, това го поправи, използвайки само пътя на файла и пренебрегвайки всяко копие на двоични данни. Отговори на въпроса ми =|
fopen
получавате дръжка обратно. - person initall   schedule 27.03.2012move_uploaded_file
. Чудя се дали има някаква разлика в кодирането на файла или нещо, което не е подходящо за използване с масив, безсмислен банкомат. - person gorn   schedule 27.03.2012