![](/img/trans.png)
[英]move uploaded image into folder in php(move_uploaded_file() function)
[英]PHP - move_uploaded_file after compressing image
我在php中有一個上傳腳本,該腳本接受一個或多個文件並將它們上傳到我的服務器上。 我現在正嘗試在上傳之前壓縮圖像,以節省時間和服務器空間。
我的壓縮功能和上傳功能都可以單獨工作,但是我無法將兩者結合在一起。
如果我沒有壓縮就上傳,如:
if (move_uploaded_file($temp, "../images/" . $upload)){
它工作正常,但是它嘗試移動壓縮的圖像而不是完整尺寸的圖像,如下所示:
// compression
$compressed = compress_image($temp, $upload, 70);
//
if (move_uploaded_file($temp, "../images/" . $compressed)){
完整代碼如下:
function getExtension($str) {
$ext = pathinfo($str, PATHINFO_EXTENSION);
return $ext;
}
function compress_image($source_url, $destination_url, $quality) {
$info = getimagesize($source_url);
if ($info['mime'] == 'image/jpeg'){$image = imagecreatefromjpeg($source_url);}
else if ($info['mime'] == 'image/gif'){$image = imagecreatefromgif($source_url);}
else if ($info['mime'] == 'image/png'){$image = imagecreatefrompng($source_url);}
imagejpeg($image, $destination_url, $quality);
return $destination_url;
}
foreach ($_FILES["images"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$temp = $_FILES["images"]["tmp_name"][$key];
$name = $_FILES["images"]["name"][$key];
$extension = getExtension($name);
$extension = strtolower($extension);
$upload = $_POST['name'].'.'.$extension;
// compression
$compressed = compress_image($temp, $upload, 70);
//
if (move_uploaded_file($temp, "../images/" . $compressed)){
echo "OK";
}
else{
echo "ERROR";
}
}
}
該文件說。
如果filename不是有效的上傳文件,則不會執行任何操作,並且move_uploaded_file()將返回FALSE。
我猜想它只能在原始上傳文件上使用。 為什么不先移動move_upload_file
然后進行壓縮。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.