У меня были рабочие отношения с сервером 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