我使用uploadImage功能上传图片。
现在我尝试上传pdf,进行一些更改,使用相同的功能而不创建其他功能,但我没有成功。
是否有像pdf的imagejpeg()等方法,所以我可以像这样做上传到我的文件夹:
case 'pdf': filepdf($new_img, $folder.$name); break;
当然我不想要调整大小部分并处理透明度,混合等效果,但我只是想将文件上传到文件夹但不起作用。
function uploadImage($tmp, $name, $width, $folder){
$ext = substr($name,-3);
switch($ext){
case 'jpg': $img = imagecreatefromjpeg($tmp); break;
case 'png': $img = imagecreatefrompng($tmp); break;
case 'gif': $img = imagecreatefromgif($tmp); break;
}
$x = imagesx($img);
$y = imagesy($img);
$height = ($width*$y) / $x;
$new_img = imagecreatetruecolor($width, $height);
imagealphablending($new_img,false);
imagesavealpha($new_img,true);
imagecopyresampled($new_img, $img, 0, 0, 0, 0, $width, $height, $x, $y);
switch($ext){
case 'jpg': imagejpeg($new_img, $folder.$name, 100); break;
case 'png': imagepng($new_img, $folder.$name); break;
case 'gif': imagegif($new_img, $folder.$name); break;
}
imagedestroy($img);
imagedestroy($new_img);
}
答案 0 :(得分:1)
我还没有测试过这段代码,但你可以尝试这样的东西......它检查MIME类型,这比你当前的方法更好。可能有意义的是将其重命名为uploadFile
而不是uploadImage
。并且$width
变量对于非图像文件不再有意义。
function uploadImage($tmp, $name, $width, $folder) {
// initialize variables
$img = $ext = null;
// supported file types
$valid_mimes = array('pdf' => 'application/pdf',
'jpg' => 'image/jpeg',
'png' => 'image/png',
'gif' => 'image/gif');
$finfo = new finfo(FILEINFO_MIME_TYPE);
if ($ext = array_search($finfo->file($tmp), $valid_mimes, true)) {
switch($ext) {
case 'pdf': move_uploaded_file($tmp, $folder.$name); break;
case 'jpg': $img = imagecreatefromjpeg($tmp); break;
case 'png': $img = imagecreatefrompng($tmp); break;
case 'gif': $img = imagecreatefromgif($tmp); break;
}
if (isset($img)) {
$x = imagesx($img);
$y = imagesy($img);
$height = ($width*$y) / $x;
$new_img = imagecreatetruecolor($width, $height);
imagealphablending($new_img,false);
imagesavealpha($new_img,true);
imagecopyresampled($new_img, $img, 0, 0, 0, 0, $width, $height, $x, $y);
switch($ext) {
case 'jpg': imagejpeg($new_img, $folder.$name, 100); break;
case 'png': imagepng($new_img, $folder.$name); break;
case 'gif': imagegif($new_img, $folder.$name); break;
}
imagedestroy($img);
imagedestroy($new_img);
}
}
}