2
我想在php中使用cURL將圖像上傳到遠程圖像服務器。我有這樣一段代碼,它是在Web服務器上:Php上傳圖像到遠程服務器與捲曲
<form enctype="multipart/form-data" encoding="multipart/form-data" method="post" action="webform.php">
<input name="somevar" type=hidden value='.$somevar.'>
<input name="uploadfile" type="file" value="choose">
<input type="submit" value="Upload">
</form>
和:
if (isset($_FILES['uploadfile'])) {
$filename = $_FILES['uploadfile']['tmp_name'];
$handle = fopen($filename, "r");
$data = fread($handle, filesize($filename));
$POST_DATA = array(
'somevar' => $somevar,
'uploadfile' => $data
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://1.1.1.1/receiver.php');
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $POST_DATA);
$response = curl_exec($curl);
curl_close ($curl);
echo $response;
}
在我有一個圖片上傳處理PHP文件,它工作得很好localhost上圖像服務器,但我想在遠程服務器上使用它。這是我如何處理在receiver.php上傳的圖片文件:
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)
我想直接通過圖像文件到遠程服務器腳本,所以這種方式,我不需要重寫整個上傳腳本。我試圖發佈圖像名稱,類型,大小作爲後變量,但我沒有得到['tmp_name'],因爲它不在本地主機上。
我該如何解決這個問題?謝謝你們的幫助!
我會盡快嘗試,回信是怎麼回事。謝謝。 – nobodyknowshim
謝謝,它的工作原理!我想指出未來的訪問者,如果你想在你的代碼中實現它,這個方法需要更多的安全性。您需要:檢查擴展名,MIME類型,大小,生成隨機名稱,move_uploaded_file,使用imagecreatefromjpg和imagejpeg php函數。在映像服務器上,您需要:再次執行上述所有任務,以確保如果有人直接向您的映像服務器發送請求,則無人能夠避免安全檢查。 – nobodyknowshim