尝试使用我的uploadImage函数进行pdf上传

时间:2014-04-29 21:05:58

标签: php pdf file-upload image-uploading

我使用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);
    }

1 个答案:

答案 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);
        }
    }
}