php-单张图片、多张图片、视频上传

简介: php-单张图片、多张图片、视频上传

单图上传:
效果图:在这里插入图片描述

uploda.html 带预览通过js实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        选择文件进行上传:
        <input type="file" name="file" id="pic" onchange="xmTanUploadImg(this)">
        <div>
            <img width="10%" height="10%" id="xmTanImg">
            <input type="submit" value="上传">
        </div>
    </form>
</body>
<script>
    //选择图片,马上预览
    function xmTanUploadImg(obj) {
        var file = obj.files[0];
        //file.size 单位为byte  可以做上传大小控制
        console.log("file.size = " + file.size);
        var reader = new FileReader();
        //读取文件过程方法
        reader.onloadstart = function (e) {
            console.log("开始读取....");
        }
        reader.onprogress = function (e) {
            console.log("正在读取中....");
        }
        reader.onabort = function (e) {
            console.log("中断读取....");
        }
        reader.onerror = function (e) {
            console.log("读取异常....");
        }
        reader.onload = function (e) {
            console.log("成功读取....");
            var img = document.getElementById("xmTanImg");
            img.src = e.target.result;
            //或者 img.src = this.result;  //e.target == this
        }
        reader.readAsDataURL(file)
    }
</script>
</html>

upload.php

<?php
$fileInfo = $_FILES['file'];
//var_dump($_FILES);

function upload_file($fileInfo,$upload = "./uploadfile",$imagesExt = ['gif','png','jpg'] )
{
    if($fileInfo['error']=== 0){
        //获取文件后缀
        $ext = strtolower(pathinfo($fileInfo['name'],PATHINFO_EXTENSION));
        //判断是否存在定义的数组中
        if(!in_array($ext,$imagesExt)){
            return "非法文件类型";
        }
        if(!is_dir($upload)){
            mkdir($upload,0777,true);
        }
        $fileName = md5(uniqid(microtime(true),true)) . "." .$ext;
        $destName = $upload . "/" . $fileName;
        //移动
        if (!move_uploaded_file($fileInfo['tmp_name'],$destName)){
            return "文件上传失败";
        }
        return "文件上传成功";
    }else{
        switch ($fileInfo['error']){
            case 1:
                echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值(2M)';
                break;
            case 2:
                echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
                break;
            case 3:
                echo '文件只有部分被上传';
                break;
            case 4:
                echo '没有文件被上传';
                break;
            case 6:
                echo '找不到临时文件夹';
                break;
            case 7:
                echo '文件写入失败';
                break;
        }
    }
}
var_dump(upload_file($fileInfo));

多图上传:
uploads.html

<body>
<form action="uploads.php" method="post" enctype="multipart/form-data">
    选择文件进行上传: <input type="file" name="file[]" multiple=""><br>
    <input type="submit" value="上传">
</form>
</body>

uploads.php
<?php
echo "<pre>";
var_dump($_FILES);
$files = [];
function getFile()
{
    $i = 0;
    foreach ($_FILES as $file) {
        if (is_string($file['name'])) {
            $files['$i'] = $file;
            $i++;
        } elseif (is_array($file['name'])) {
            foreach ($file['name'] as $k => $v) {
                $files[$i]['name'] = $file['name'][$k];
                $files[$i]['type'] = $file['type'][$k];
                $files[$i]['tmp_name'] = $file['tmp_name'][$k];
                $files[$i]['error'] = $file['error'][$k];
                $files[$i]['size'] = $file['size'][$k];
                $i++;
            }
        }
    }
    return $files;
}
//对多个文件的上传信息进行解析
function uploads_file($fileInfo, $upload = "./uploads", $imagesExt = ['gif', 'png', 'jpg'])
{
    $res = [];
    if ($fileInfo['error'] === 0) {
        $ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION));
        if (!in_array($ext, $imagesExt)) {
            $res['mes'] = "文件非法类型";
        }
        if (!is_dir($upload)) {
            mkdir($upload, 0777, true);
        }
        if ($res) {
            return $res;
        }
        $fileName = md5(uniqid(microtime(true), true)) . "." . $ext;
        $destName = $upload . "/" . $fileName;
        if (!move_uploaded_file($fileInfo['tmp_name'], $destName)) {
            $res['mes'] = "文件上传失败!";
        }
        $res['mes'] = $fileInfo['name'] . "文件上传成功!";
        $res['dest'] = $destName;
        return $res;
    } else {
        switch ($fileInfo['error']) {
            case 1:
                echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
                break;
            case 2:
                echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
                break;
            case 3:
                echo '文件只有部分被上传';
                break;
            case 4:
                echo '没有文件被上传';
                break;
            case 6:
                echo '找不到临时文件夹';
                break;
            case 7:
                echo '文件写入失败';
                break;
        }
    }
}

$files = getFile();
foreach ($files as $fileInfo) {
    $res = uploads_file($fileInfo);
    echo $res['mes'];
    //var_dump($res['dest']);
}

视频上传:
uploadvideo.html

<form action="uploadvideo.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="2000000000">
    上传视频:<input type="file" name="upfile" size="20">
    <input type="submit" value="上传">
</form>
</body>

uploadvideo.php

<?php
$file = $_FILES['upfile'];
function upload_video($files, $path = "./videos",$imagesExt=['mp4'])
{
    // 判断错误号
    if (@$files['error'] == 00) {
        // 判断文件类型
        $ext = strtolower(pathinfo(@$files['name'],PATHINFO_EXTENSION));
        if (!in_array($ext,$imagesExt)){
            return "非法文件类型";
        }
        // 判断是否存在上传到的目录
        if (!is_dir($path)){
            mkdir($path,0777,true);
        }
        // 生成唯一的文件名
        $fileName = md5(uniqid(microtime(true),true)).'.'.$ext;
        // 将文件名拼接到指定的目录下
        $destName = $path."/".$fileName;
        // 进行文件移动
        if (!move_uploaded_file($files['tmp_name'],$destName)){
            return "文件上传失败!";
        }
        return "文件上传成功!";
    } else {
        // 根据错误号返回提示信息
        switch (@$files['error']) {
            case 1:
                echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
                break;
            case 2:
                echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
                break;
            case 3:
                echo "文件只有部分被上传";
                break;
            case 4:
                echo "没有文件被上传";
                break;
            case 6:
            case 7:
                echo "系统错误";
                break;
        }
    }
}
//调用方法
echo upload_video($file);
?>
目录
相关文章
|
4月前
|
PHP
使用PHP实现随机调用图片
使用PHP实现随机调用图片
150 0
使用PHP实现随机调用图片
|
5月前
|
小程序 PHP 数据安全/隐私保护
php图片加水印函数
这里分享下php给图片加水印的几个自定义函数 给图片加水印首先需要开启GD库。 用到的php函数是imagecopymerge () 和 imagecopy () imagecopymerge 函数可以支持两个图像叠加时,设置叠加的透明度
48 0
|
7月前
|
PHP
【PHP】读取本地文件夹中所有图片并显示
PHP图片收集系统收集作业后,为了方便老师在线查阅作业,特意写了个读取图片然后显示出来的php 比较粗糙,可以再多美化美化
65 0
|
13天前
|
PHP 数据库
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务-2
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务
|
13天前
|
存储 PHP Apache
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务-1
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务
|
18天前
|
数据采集 机器学习/深度学习 存储
图片大搜罗:PHP下载器带你畅游Twitter图像海洋
构建Twitter图像下载器,使用PHP模拟请求抓取图像,通过代理IP规避限制。示例代码展示如何设置代理、用户代理和Cookie,解析HTML提取图像链接并下载。结合机器学习与元数据分析,可洞察用户行为和社会趋势。代理服务器信息及Twitter URL需自行替换。
图片大搜罗:PHP下载器带你畅游Twitter图像海洋
|
1月前
|
PHP
php下载MP4视频
php下载MP4视频
10 0
|
2月前
|
存储 PHP Apache
使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床
使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床
|
10月前
|
PHP
PHP实现自制随机图片API- 调用文件夹和引用网络图片
PHP实现随机图片API- 调用文件夹和引用网络图片
113 0