热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP核心编程文件上传(包含多文件上传)

一.单文件上传图片上传界面:上传处理文件:二,多文件上传多
一.单文件上传

图片上传界面:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Documenttitle>
head>
<body>

     <form name=‘frm‘action="./uploadSave.php" method="post" enctype="multipart/form-data">
         <input type="file" name="upfile" >input>
         <input type="submit" name="submit" value="上传图片">input>
     form>


body>
html>

上传处理文件:

php
header(‘content-type:text/html;charset=utf-8‘);

/**
 * 上传文件:可以通过输入的参数设置上传的文件类型
 * 上传文件的大小限制,和上传的路径
 * @param  [type] $myupfile [表单文件域name的名称]
 * @param  [type] $maxsize  [允许上传的最大值]
 * @param  [type] $arr_mime [允许的MIME类型]
 * @param  [type] $path     [上传的路径]
 * @author qinxiaoshou
 * 2017年9月6日
 */

function uploadfile($myupfile, $maxsize, $arr_mine, $path) {
        //判断文件是否是通过 HTTP POST 上传的
        // if (isset($_POST[‘submit‘])) {}
        if(!is_uploaded_file($myupfile[‘tmp_name‘])) {
            //如果有错误则直接停止脚本
            echo "上传有错误,请重新上传";
        }
        //判断是否有错误
        if ($myupfile[‘error‘]) {
            echo "上传有错误,请重新上传";
        }
        //判断文件大小 -- 不允许上传大于2M的文件
        if ($myupfile[‘size‘] > $maxsize) {
            echo "上传文件过大,请重新上传";
        }
        //获取文件扩展名
        $filename = $myupfile[‘name‘];
        // //方法一
        //strrpos 计算指定字符串在目标字符串中最后一次出现的 位置
        //strrpos(haystack, needle);
        //strrpos(大海, 针);
        // $index = strrpos($filename,‘.‘);
        // $ext = substr($filename,$index);
        // echo "$ext";

        //方法二
        //strrchr - 查找指定字符在字符串的最后一次出现
        $ext = strrchr($filename,‘.‘); // .jpg
        // echo $ext;
        //判断文件类型

        //面向过程风格
        $fs = finfo_open(FILEINFO_MIME_TYPE);
        $mine = finfo_file($fs,$myupfile[‘tmp_name‘]);
        
        //允许上传的文件类型
        //$arr_mine = [‘image/jpeg‘,‘image/png‘];
        //in_array — 检查数组中是否存在某个值
        //in_array(needle, haystack)
        if(!in_array($mine,$arr_mine)) {
            die(‘文件的类型不正确,请重新上传‘);
        }
        //构建临时文件
        $filename = $myupfile[‘tmp_name‘];
        //构建目标文件
        // $path = ‘./upload‘;
        $destination  = $path.‘/‘.date(‘YmdHis‘).$ext;

        //将上传文件移动到新的位置返回布尔
        //move_uploaded_file(filename,destination)
        //move_uploaded_file(临时文件,自定义目标文件)
        if(!move_uploaded_file($filename,$destination)) {
            die(‘上传失败!‘);
        }
    
}
二,多文件上传
DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Documenttitle>
head>
<body>
    <form name=‘frm‘ method=‘post‘ action=‘upload.php‘ enctype="multipart/form-data">
        <table width="50%" border="2" align="center" rules="all" cellpadding="10">
            <tr>
                <th colspan="2">
                上传文件:<br>
                <input type="file" name="upload[]">input><br><br>
                <input type="file" name="upload[]">input><br><br>
                <input type="file" name="upload[]">input><br><br>
                <input type="submit" name="submit" value="上传">input>
                th>
            tr>
        table>
    form>
body>
html>

多文件上传处理:

php 
header(‘content-type:text/html;charset=utf-8‘);

if (isset($_POST[‘submit‘])) {
    /*echo "
";
    print_r($_FILES);
    echo "
"; echo "
";
*/ $arr = $_FILES[‘upload‘]; echo "
";
    print_r($arr);
    echo "
"; echo "
"; foreach ($arr[‘tmp_name‘] as $key => $value) { /*echo $key,$value,"
"; die;
*/ //构建临时文件 //$filename = $_FILES[‘upload‘][‘tmp_name‘]; //构建目标文件 if( $arr[‘size‘][$key] >2*1024*1024){ die(‘no‘); } $path = ‘./upload‘; //获取一个带前缀、基于当前时间微秒数的唯一ID。 $destination = $path.‘/‘.uniqid(‘itcast‘).‘.jpg‘; //将上传的文件移动到新位置,返回布尔 //move_uploaded_file(filename, destination) //move_uploaded_file(临时文件, 自定义目标文件) if(!move_uploaded_file($value,$destination)){ die(‘上传失败!‘); } } } else { //如果直接访问此页面 echo ""; } ?>

PHP核心编程--文件上传(包含多文件上传)


推荐阅读
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
  • 本文探讨了如何通过最小生成树(MST)来计算严格次小生成树。在处理过程中,需特别注意所有边权重相等的情况,以避免错误。我们首先构建最小生成树,然后枚举每条非树边,检查其是否能形成更优的次小生成树。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • 几何画板展示电场线与等势面的交互关系
    几何画板是一款功能强大的物理教学软件,具备丰富的绘图和度量工具。它不仅能够模拟物理实验过程,还能通过定量分析揭示物理现象背后的规律,尤其适用于难以在实际实验中展示的内容。本文将介绍如何使用几何画板演示电场线与等势面之间的关系。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
  • 本文介绍如何在应用程序中使用文本输入框创建密码输入框,并通过设置掩码来隐藏用户输入的内容。我们将详细解释代码实现,并提供专业的补充说明。 ... [详细]
  • 本文介绍如何通过SQL查询从JDE(JD Edwards)系统中提取所有字典数据,涵盖关键表的关联和字段选择。具体包括F0004和F0005系列表的数据提取方法。 ... [详细]
  • 本文详细介绍了如何通过命令行启动MySQL服务,包括打开命令提示符窗口、进入MySQL的bin目录、输入正确的连接命令以及注意事项。文中还提供了更多相关命令的资源链接。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
author-avatar
抵制日货2502901143
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有