PHP-图片上传

简介: PHP-图片上传

面向对象方式编写文件上传类
uploadPic.class.php

<?php
/**
文件上传类
 */
class uploadPic
{
    // 定义成员变量
    private $allow_type = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif');
    private $max_size = 1048576;
    private $upload_path = 'C:/wamp/www/phpProj/upload/';
    private $error = '';

    /**
    构造方法
     $param 用来修改成员属性的数组数据
     */
    public function __construct($param)
    {
        if (isset($param['allow_type'])) $this->allow_type = $param['types'];
        if (isset($param['max_size'])) $this->max_size = $param['size'];
        if (isset($param['upload_path'])) $this->upload_path = $param['path'];
    }

    /**文件上传函数
     * $file 包含文件上传的5个信息数据
     * $prefix 前缀
     */
    public function upload($file,$prefix = ''){
        // 判断文件是否有错误
        if($file['error'] != 0){
            $upload_error = array(
                1 => '文件过大,超出PHP配置的限制',
                2 => '文件过大,超出Form表单中的限制',
                3 => '文件未上传完毕',
                4 => '文件没有上传',
                5 => '',
                6 => '没有找到临时上传目录',
                7 => '临时文件写入失败'
            );
            $this->error = isset($upload_error[$file['error']]) ? $upload_error[$file['error']] : '未知错误';
            return false;
        }

        // 判断类型是否在$allow_type中
        if (!in_array($file['type'],$this->allow_type)){
            $this->error = '此类型的图片不支持上传!图片类型请参考:'.implode('|',$this->allow_type);
            return false;
        }

        // 判断文件是否超出$max_size规定值
        if ($file['size'] > $this->max_size){
            $this->error = '文件不能超过'.$this->max_size.'字节';
            return false;
        }

        // 新文件名,生成唯一的文件名,并保留原有的文件扩展名
        $new_fileName = uniqid($prefix).strrchr($file['name'],'.');
        // 确定当前子目录
        $sub_path = date('Ymd');
        // 确定文件上传全路径
        $upload_path = $this->upload_path.$sub_path;
        // 判断目录是否存在
        if (!is_dir($upload_path)){
            mkdir($upload_path);
        }
        // 移动文件
        if (move_uploaded_file($file['tmp_name'],$upload_path.'/'.$new_fileName)){
            // succ
            return '/upload/'.$sub_path.'/'.$new_fileName;
        }else{
            $this->error = '上传失败!';
            return false;
        }
    }

    public function getError(){
        return $this->error;
    }
}

上传表单
upload.php

<?php
header('content-type:text/html;charset=utf-8');
require './upload.class.php';
$pic_path = '';
if (isset($_FILES['pic'])){
    // 设置上传图片参数
    $param = array(
        'types' => array('image/jpeg','image/jpg','image/png'),
        'size' => 600000,
        'path' => 'C:/wamp/www/phpProj/upload/'
    );
    // 实例化函数,传入$param
    $upload = new uploadPic($param);
    if (!$pic_path = $upload->upload($_FILES['pic'],'pic_')){
        echo $upload->getError();
        die;
    }
}
?>
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>上传图片</title>
</head>
<body>
    <h2>图片上传</h2>
    <p>
        <p>现有图片</p>
        <img width="30%" src="<?php echo './'.$pic_path; ?>" onerror="this.src='./upload/default.jpg'"/>
        <form action="./upload.php" method="post" enctype="multipart/form-data">
            <p>上传图像:<input name="pic" type="file"></p>
            <p><input type="submit" value="上传图片"></p>
        </form>
    </p>
</body>
</html>

功能实现前后对比图:
在这里插入图片描述

在这里插入图片描述

目录
相关文章
|
8月前
|
PHP
使用PHP实现随机调用图片
使用PHP实现随机调用图片
204 0
使用PHP实现随机调用图片
|
小程序 PHP 数据安全/隐私保护
php图片加水印函数
这里分享下php给图片加水印的几个自定义函数 给图片加水印首先需要开启GD库。 用到的php函数是imagecopymerge () 和 imagecopy () imagecopymerge 函数可以支持两个图像叠加时,设置叠加的透明度
97 0
|
PHP
【PHP】读取本地文件夹中所有图片并显示
PHP图片收集系统收集作业后,为了方便老师在线查阅作业,特意写了个读取图片然后显示出来的php 比较粗糙,可以再多美化美化
125 0
|
6月前
|
数据采集 缓存 自然语言处理
PHP将HTML标签转化为图片
通过这个方法,PHP后端能够实现将HTML内容转化为图片的功能。这种方式虽然牵涉到一些额外的安装和配置,但能够相对灵活且稳定地解冀转换需求,适用于需要在后端动态生成图片的场景。
262 1
|
8月前
|
数据采集 机器学习/深度学习 存储
图片大搜罗:PHP下载器带你畅游Twitter图像海洋
构建Twitter图像下载器,使用PHP模拟请求抓取图像,通过代理IP规避限制。示例代码展示如何设置代理、用户代理和Cookie,解析HTML提取图像链接并下载。结合机器学习与元数据分析,可洞察用户行为和社会趋势。代理服务器信息及Twitter URL需自行替换。
图片大搜罗:PHP下载器带你畅游Twitter图像海洋
|
7月前
|
PHP
php 生成二维码图片
php 生成二维码图片
46 0
|
8月前
|
PHP 数据库
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务-2
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务
100 0
|
8月前
|
存储 PHP Apache
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务-1
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务
|
移动开发 JavaScript 前端开发
数据可视化大屏百度地图手机端标注开发实战案例解析(jsAPI接口、标注分类图片、文本标签、分类筛选、自适应高度信息弹窗、PHP后端API)
数据可视化大屏百度地图手机端标注开发实战案例解析(jsAPI接口、标注分类图片、文本标签、分类筛选、自适应高度信息弹窗、PHP后端API)
226 0
|
PHP
PHP实现自制随机图片API- 调用文件夹和引用网络图片
PHP实现随机图片API- 调用文件夹和引用网络图片
225 0