我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP---文件上传

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP---文件上传

目录

一、文件上传的概念

二、文件上传的步骤

(1)表单的制作

三、$_FILES详解

(1)name

(2)tmp_name

(3)type

(4)error

(5)size

 四、移动临时文件到目标位置

 五、多文件上传

(1)同名表单

 1:同名文件的数据结构

 2:同名文件的处理方式

(2)不同文件名

 1:不同文件名的数据结构

 2:不同文件名的处理方式


文件上传就是文件从用户本地电脑通过传输方式(web表单)保存到服务器所在电脑指定的目录下。
那么文件上传的原理是什么呢?
用户通过文件上传的表单从本地选择文件上传到服务器,服务器操作系统会将文件保存到临时文件夹中,注意是临时文件夹中,然后服务器开始工作,先判断文件是否有效,然后服务器脚本将有效文件从临时文件夹移动到指定目录下

(1)表单的制作

1:method属性:表单提交方式必须为post
2:enctype属性:form表单属性,主要是规范表单数据的编码方式
在文件上传时,必须等于的值为multipart/form_data
3:上传表单:file表单 

 

    

在接收到上传的文件后,服务器端如何接受呢,这就要说到预定义变量$_FILES,它是专门用来存储用户上传的文件的。要注意上传的文件并不是$_POST接收的,而是$_FILES。同时使用$_FILES接受后他会有六个属性,如下图所示。

 第一个[wenjian]就是上传文件的name值,后面的name,full_path,type,tmp_name,error,size便是说的属性

(1)name

文件在(浏览器端)用户电脑上的名字。(实际用来看文件的后缀)

(2)tmp_name

文件上传到服务器上操作系统保存到临时路径(实际用来给PHP后期使用)

(3)type

MIME(多功能互联网邮件扩展)类型,用来在计算机客户端识别文件类型,就是比如说一个文件用什么打开,用word打开还是记事本等等。 (实际用来判断给什么软件使用)

(4)error

文件上传的代号,用来告知应用软件(PHP)文件接收过程中出现了什么问题。如:
值=0,没有错误发生,文件上传成功
值=1,上传的文件超过了php.in中upload max filesize选项限制的值
值=2,上传的文件大小超过了HTML表单中MAX_FILE_SIZE选项指定的值
值=3,文件只有部分被上传
值=4,没有文件被上传


值=6,找不到临时文件夹,也就是说操作系统对应的临时文件夹不存在
值=7,文件写入失败,也就是说PHP没有权限将临时文件夹移动到
指定目录

 

 (实际用来PHP后期根据代码进行文件判断)

(5)size

文件大小(实际用来判断文件是否保留) 

临时文件移动到目标位置主要分为两步
(1)判断是否是上传的文件is_uploaded_file()
(2)移动文件move_uploaded_file()

 既然想要移动文件,首先我们得获取文件信息,$_FILES['name']可以获取文件,其中的name是表单中的name属性值,获取后我们便需要判断文件是否是上传文件,即is_uploaded_file($_FILES['name']['tmp_name'])需要获得临时路径来判断。

move_uploaded_file($_FILES['name']['tmp_name'],指定路径),他们都有一个返回值,即是否成功,成功为true,否则为false。

 

    

多文件上传顾名思义就是上传多个图片,而上传多个图片又分为同名表单和批量解决问题
在具体的实例中

同名表单:当商品需要上传多个图片进行展示的时候,如上传的是同一个物品的不同角度,这时候就用到[]就行。

批量解决问题:取得name属性都不一样

(1)同名表单

             1:同名文件的数据结构

 

';   print_r($_FILES);?>
    

 同名表单将名字形成一个数组,而且同时将文件对应的五个要素:name,tmp_name,size,type,error都形成对应数量的数组,每个文件上传对应数组元素的下标都是一样的,如:name[0]和tmp_name[0]都属于同一个文件。

           2:同名文件的处理方式

';   //先判断文件是否存在并且是不是数组即是不是同名文件   if(isset($_FILES['image']['name'])&&is_array($_FILES['image']['name'])){   $images=array();   foreach($_FILES['image']['name'] as $k=>$file){   //这个k就相当于数字下标   $images[]=array(   'name'=>$file,   'tmp_name'=>$_FILES['image']['tmp_name'][$k],   'type'=>$_FILES['image']['type'][$k],   'error'=>$_FILES['image']['error'][$k],   'size'=>$_FILES['image']['size'][$k]   );   }   }   print_r($images);   //开始遍历数组一个一个保存   foreach($images as $f){   if(is_uploaded_file($f['tmp_name'])){   move_uploaded_file($f['tmp_name'],'upload/'.$f['name']);   }   }?>

 

(2)不同文件名

          1:不同文件名的数据结构

    
';   print_r($_FILES);?>

 批量上传:不同名表单每个文件都会形成一个属于自己独立的5个元素的数组

            2:不同文件名的处理方式

来源地址:https://blog.csdn.net/gaoqiandr/article/details/128513107

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP---文件上传

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP cURL 文件上传

本篇文章将指导如何使用 cURL 和 CURLFile 类将图像文件发送到服务器。这个想法是将图像文件从一个页面发布到另一个页面上的另一个页面。Index.php:首先,我们将文件 image 发送到 index.php。其次,我们将文件重
PHP cURL 文件上传
2024-02-27

如何上传php文件

这篇文章给大家分享的是有关如何上传php文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php文件上传的步骤:首先创建一个文件上传表单;然后创建上传脚本“upload_file.php”文件;接着设置对文件上传
2023-06-14

php如何上传文件

这篇文章主要介绍php如何上传文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向对象编程:PHP提供了类
2023-06-14

php如何实现文件夹上传文件

这篇“php如何实现文件夹上传文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何实现文件夹上传文件”文章吧。一、什
2023-07-05

PHP如何上传文件代码

这篇文章将为大家详细讲解有关PHP如何上传文件代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。最主要的两个函数是move_uploade_file(临时文件,目标位置和文件名)和is_uploaded_
2023-06-17

php上传中文文件无法上传问题怎么解决

php上传中文文件无法上传的解决办法:1、通过“iconv("GBK", "UTF-8", $content);”方法将中文字符编码转换一下;2、将文件重命名即可。
2023-05-14

php文件上传插件如何使用

要使用PHP文件上传插件,您需要按照以下步骤进行操作:1. 下载插件:首先,您需要从互联网上下载一个PHP文件上传插件。一些常见的插件包括:Dropzone.js,Plupload,FineUploader等。您可以在这些插件的官方网站或G
2023-10-18

php多文件上传怎么处理

在 PHP 中处理多文件上传可以使用 $_FILES 超全局变量来获取上传文件的信息。首先,需要在表单中设置 enctype="multipart/form-data" 属性来提供支持文件上传的功能:```html```然后,在服务器端的
2023-10-12

如何使文件PHP上传生效

本篇文章为大家展示了如何使文件PHP上传生效,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PHP经过长时间的发展,很多用户都很了解PHP了,这里我发表一下个人理解,和大家讨论讨论。PHP是一种用于创
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录