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