1
我與使用curl從PHP的Java服務器和PHP服務器有工作關係。
使用curl我發送了一個數組與圖像數據和一些字符串值。
在PHP中,圖像是從HTTP POST表單直接獲取(tmp storage)併成功放入數組中。但是現在我需要move_uploaded_file
先到指定的目錄,然後用fopen讀回另一個使用curl的PHP文檔。
唯一的區別是我用$ _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
)
或者更好的說,它只有一個文件路徑字符串。好的,這樣就可以使用文件路徑來修復它,並忽略任何二進制數據的副本。回答了我的問題= |
你知道嗎php腳本執行文件$ _FILES [「photo」] [「tmp_name」]將被刪除。您必須將其移到其他位置。 – MatejB 2012-03-27 10:00:22
你想在數組中放什麼?一個文件名?或文件本身(以某種編碼格式)?用'fopen'你會得到一個句柄。 – initall 2012-03-27 10:03:28
那就是我用'move_uploaded_file'說的。我不知道文件編碼有什麼不同,或者不適合用於數組,無法使用atm。 – gorn 2012-03-27 10:04:05