简体   繁体   中英

PHP code, remove renaming

If possible please i'd ask a favor, i've been trying to change this it but i haven't succeeded, i wanted to change it in my php file, but no result!

now this script below is a resize script, but it renames my file... i don't need it to do so, can you please see it and tell me how to remove the renaming of the file?

I know it has something to do with : $image->createFile(md5($tempFile)); i tried removing the md5 and still nothing...

Thanks!

function setFile($src = null) {
$this->ext = strtoupper(pathinfo($src, PATHINFO_EXTENSION));
if(is_file($src) && ($this->ext == "JPG" OR $this->ext == "JPEG")) {
$this->img_r = ImageCreateFromJPEG($src);
} elseif(is_file($src) && $this->ext == "PNG") {
$this->img_r = ImageCreateFromPNG($src);
} elseif(is_file($src) && $this->ext == "GIF") {
$this->img_r = ImageCreateFromGIF($src);
}
$this->img_w = imagesx($this->img_r);
$this->img_h = imagesy($this->img_r);
}

function resize($largestSide = 100) {
$width = imagesx($this->img_r);
$height = imagesy($this->img_r);
$newWidth = 0;
$newHeight = 0;

if($width > $height){
$newWidth = $largestSide;
$newHeight = $height * ($newWidth / $width);
}else{
$newHeight = $largestSide;
$newWidth = $width * ($newHeight / $height);
}

$this->dst_r = ImageCreateTrueColor($newWidth, $newHeight);
imagecopyresampled($this->dst_r, $this->img_r, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
$this->img_r = $this->dst_r;
$this->img_h = $newHeight;
$this->img_w = $newWidth;
}

function createFile($output_filename = null) {
if($this->ext == "JPG" OR $this->ext == "JPEG") {
imageJPEG($this->dst_r, $this->uploaddir.$output_filename.'.'.$this->ext, $this->quality);
} elseif($this->ext == "PNG") {
imagePNG($this->dst_r, $this->uploaddir.$output_filename.'.'.$this->ext);
} elseif($this->ext == "GIF") {
imageGIF($this->dst_r, $this->uploaddir.$output_filename.'.'.$this->ext);
}
$this->output = $this->uploaddir.$output_filename.'.'.$this->ext;
}

function setUploadDir($dirname) {
$this->uploaddir = $dirname;
}

function flush() {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];

imagedestroy($this->dst_r);
unlink($targetFile);
imagedestroy($this->img_r);

}

}

$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];

move_uploaded_file ($tempFile, $targetFile);

$image = new Image();
$image->setFile($targetFile);
$image->setUploadDir($targetPath);
$image->resize(800);
$image->createFile(md5($tempFile));

try changing to

$image->createFile('resized_'.$_FILES['Filedata']['name']);


function createFile($output_filename = null) {
    if($this->ext == "JPG" OR $this->ext == "JPEG") {
        imageJPEG($this->dst_r, $this->uploaddir.$output_filename, $this->quality);
    } elseif($this->ext == "PNG") {
        imagePNG($this->dst_r, $this->uploaddir.$output_filename);
    } elseif($this->ext == "GIF") {
        imageGIF($this->dst_r, $this->uploaddir.$output_filename);
    }
    $this->output = $this->uploaddir.$output_filename;
}

You confuse the file's actual name ( $_FILES['Filedata']['name'] ) with the temporary name ( $_FILES['Filedata']['tmp_name'] ). The first is the file the client uploaded. The second is a temporary file that the server created one the server's machine. So you have to use the actual, client-side name here.

这会让你开心

$image->createFile(preg_replace("/\.[^\.]*$/", "", $targetFile));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM