php处理上传文件的步骤,php文件上传步骤

6303c23c0f78554979f3bc51e22aa8b7.png

我们在开发网站的时候,经常会遇到需要制作文件上传功能,下面我们就为大家介绍一下php制作文件上传功能的详细步骤。

推荐教程:PHP视频教程

第一步:创建一个文件上传表单

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的 HTML 表单:

Filename:

请留意如下有关此表单的信息:

标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。

标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

第二步:创建上传脚本

"upload_file.php" 文件含有供上传文件的代码:<?php

if ($_FILES["file"]["error"] > 0)

{

echo "Error: " . $_FILES["file"]["error"] . "
";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "
";

echo "Type: " . $_FILES["file"]["type"] . "
";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";

echo "Stored in: " . $_FILES["file"]["tmp_name"];

}

?>

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:

●$_FILES["file"]["name"] - 被上传文件的名称

●$_FILES["file"]["type"] - 被上传文件的类型

●$_FILES["file"]["size"] - 被上传文件的大小,以字节计

●$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称

●$_FILES["file"]["error"] - 由文件上传导致的错误代码

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

第三步:上传限制

在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:<?php

if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/pjpeg"))

&& ($_FILES["file"]["size"] < 20000))

{

if ($_FILES["file"]["error"] > 0)

{

echo "Error: " . $_FILES["file"]["error"] . "
";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "
";

echo "Type: " . $_FILES["file"]["type"] . "
";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";

echo "Stored in: " . $_FILES["file"]["tmp_name"];

}

}

else

{

echo "Invalid file";

}

?>

注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。

第四步:保存被上传的文件

上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。

这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:<?php

if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/pjpeg"))

&& ($_FILES["file"]["size"] < 20000))

{

if ($_FILES["file"]["error"] > 0)

{

echo "Return Code: " . $_FILES["file"]["error"] . "
";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "
";

echo "Type: " . $_FILES["file"]["type"] . "
";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";

echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
";

if (file_exists("upload/" . $_FILES["file"]["name"]))

{

echo $_FILES["file"]["name"] . " already exists. ";

}

else

{

move_uploaded_file($_FILES["file"]["tmp_name"],

"upload/" . $_FILES["file"]["name"]);

echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

}

}

}

else

{

echo "Invalid file";

}

?>

上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。

注释:这个例子把文件保存到了名为 "upload" 的新文件夹。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab求傅里叶级数展开式_傅里叶级数:从向量的角度看函数

帮助你理解线性代数与机器学习紧密结合的核心内容下文节选自北大出版社《机器学习线性代数基础》, [遇见]已获授权许可. 这本书不同于传统教材, 从新的角度来介绍线性代数的核心知识, 讲解也很棒, 又刚好参加参加了当当每满100-50的活动, 感兴趣的朋友可以关注下. 傅里叶级数&a…

c++实现超声回波包络检测_超声波物位计的选用

超声波物位计超声波在气体、液体和固体介质中以一定速度传播时因被吸收而衰减&#xff0c;但衰减程度不同&#xff0c;在气体中衰减最大&#xff0c;而在固体中衰减最小&#xff1b;当超声波穿越两种不同介质构成的分界面时会产生反射和折射&#xff0c;且当这两种介质的声阻抗…

Android应用开发:CardView的使用及兼容

原文&#xff1a;http://blog.csdn.net/airk000/article/details/39520977 点击阅读原文 --------------------------------------------------------------- 引言 在Google I/O 2014上&#xff0c;Google公布了Android L Preview版本&#xff0c;此版本的UI有了非常大的改变…

云海技术u盘怎么恢复成普通盘_BITLOCKER加密中断数据无法读取恢复一例

同行求助此问题&#xff0c;密码客户是知道的&#xff0c;输入密码后提示如图&#xff1a;如果点击RESUME则提示如下&#xff1a;无视提示关闭提示框后再次提示分区需要格式化&#xff1a;PC3000 DE中可以添加虚拟驱动器解析BITLOCKER加密的分区&#xff0c;但该例添加虚拟驱动…

git 未能顺利结束(退出码1)

按照这个博客上安装完小乌龟git后&#xff1a;https://blog.csdn.net/jdsjlzx/article/details/51098588win10下安装完乌龟git后无法上传文件进行文件上传时出现错误如下&#xff1a;git 未能顺利结束&#xff08;退出码1&#xff09;&#xff08;922ms2018/4/17 22&#xff1a…

交际过程的两个基本环节_男女相处,若不介意这些“小动作”,基本可以确定“关系暧昧”...

当你对我说再见的时候&#xff0c;我看到你的笑容里有祝福&#xff0c;眼神里却有遗憾……——南明夫人爱情中最美好幸福的事&#xff0c;莫过于你深爱的人&#xff0c;恰好也钟情于你。这种两情相悦的爱情总是如此难得&#xff0c;让人心生羡慕。这份甜蜜与美好&#xff0c;让…

Android之NetworkOnMainThreadException异常

原文链接&#xff1a;http://blog.csdn.net/mad1989/article/details/25964495 点击阅读原文 ------------------------------------------------------------------ 看名字就应该知道&#xff0c;是网络请求在MainThread中产生的异常 先来看一下官网的解释&#xff1a; Cl…

中国信通院金融科技负责人韩涵:大数据是生产资料的变革,区块链是生产关系的变革...

在近日召开的“2018中国金融科技产业峰会”上&#xff0c;中国信息通信研究院主任工程师、金融科技负责人韩涵正式发布了《中国金融科技前沿技术发展趋势及应用场景研究报告》&#xff0c;详细讲解了A&#xff08;人工智能&#xff09;B&#xff08;区块链&#xff09;C&#x…

java简单纸牌游戏_活动回顾 | 畅玩法语纸牌游戏

11月17日下午&#xff0c;20级小伙伴们迎来了第二次法语角活动&#xff01;这次外教Anne-Flore Vrac 老师为同学们安排了丰富有趣的法语纸牌游戏&#xff0c;快来一起回顾活动的精彩瞬间吧&#xff01;集体游戏一&#xff1a;从1到30老师首先带领同学们进行了“从1到30”的小游…

人脸识别门禁_小区人脸识别门禁或取代传统门禁刷卡方式

可以说&#xff0c;社区是一个人口聚集的小型社会。首先社区的人流量很大&#xff0c;进出是十分频繁。其次&#xff0c;社区的大门以及各处进出口是业主与访客、外来人员等进进出出最关键的通道。因此&#xff0c;每个社区都会有一套成型的门禁系统&#xff0c;常见的是使用门…

元类编程--property动态属性

from datetime import date, datetime class User:def __init__(self, name, birthday):self.name nameself.birthday birthdayself._age 0# def get_age(self):# return datetime.now().year - self.birthday.yearproperty #动态属性def age(self): #属性描述符&#x…

vscode运行python文件_vscode怎么运行python文件

1、首先需要确保安装了VScode的Python插件&#xff0c;打开Python脚本&#xff0c;可以直接拖入&#xff0c;点击文件&#xff0c;点击首选项里的用户设置&#xff0c;这时候会用户设置配置文件。2、然后在左边文件CtrlF搜索Python关键字&#xff0c;找到pythonPath所在行3、然…

逻辑回归算法_算法逻辑回归

logistic回归又称logistic回归分析&#xff0c;是一种广义的线性回归分析模型&#xff0c;常用于数据挖掘&#xff0c;疾病自动诊断&#xff0c;经济预测等领域。例如&#xff0c;探讨引发疾病的危险因素&#xff0c;并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例&a…

使用docker搭建wordpress网站

概述 使用docker的好处就是尽量减少了环境部署&#xff0c;可靠性强&#xff0c;容易维护&#xff0c;我使用docker搭建wordpress的主要目标有下面几个首先我重新生成数据库容器可以保证数据库数据不丢失&#xff0c;重新生成wordpress容器保证wordpress网站数据不丢失&#xf…

XUtils之注解机制详解

原文&#xff1a;http://blog.csdn.net/rain_butterfly/article/details/37931031 点击阅读原文 ------------------------------------------------------ 这篇文章说一下xUtils里面的注解原理。 先来看一下xUtils里面demo的代码&#xff1a; [java] view plaincopy print?…

oracle ko16mswin949,mysql字符集 - osc_wq7ij8li的个人空间 - OSCHINA - 中文开源技术交流社区...

恰当的字符集&#xff0c;畅快的体验&#xff01;00、Oracle字符集Subsets and Supersets #子集与超集Table A-11 Subset-Superset PairsSubset(子集)Superset(超集)AR8ADOS710AR8ADOS710TAR8ADOS720AR8ADOS720TAR8ADOS720TAR8ADOS720AR8APTEC715AR8APTEC715TAR8ARABICMACTAR…

曼彻斯特编码_两种编码方式以及两种帧结构

一、不归零制编码(Non-Return to Zero)对于不归零制编码是最简单的一种编码方式&#xff0c;正电平代表1&#xff0c;负电平代表0。如下图&#xff1a;其实在不归零制编码中有一个很明显的缺陷&#xff0c;那就是它不是自同步码。对于上图&#xff0c;你知道它传输的数据是什么…

Android快速开发框架XUtils

原文地址&#xff1a;http://blog.csdn.net/rain_butterfly/article/details/37812371 点击阅读原文 -------------------------------------------- https://github.com/wyouflf/xUtils https://github.com/wyouflf/xUtils3 XUtils是基于afinal开发的&#xff0c;比afina…

如何安装python3.8.1_python3.8.1 安装

Loading...请注意&#xff0c;本文编写于 217 天前&#xff0c;最后修改于 217 天前&#xff0c;其中某些信息可能已经过时。系统环境&#xff1a;centos 7 安装依赖项 bash yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-d…