PHP文件的上传下载
一、文件的上传
1、客户端设置:
(1)、在
标签中将enctype和method两个属性指明相应的值。
Enctype="multipart/form-data"; Method="POST"
(2)、form表单中设置一个hidden类型的input框,其中name的值为MAX_FILE_SIZE的隐藏值
2、服务器端设置:
(1)、$_FILES多维数组:用于存储各种上传文件有关的信息
(2)、文件上传与php配置文件的设置,如以下php.ini文件中的一些指令
指令 默认值 功能描述
file_uploads ON 确定服务器上的PHP脚本是否可以接受HTTP文件上传
memory_limit 8M 设置脚本可以分配的最大内存量,防止失控的脚本独占服务器内存
upload_max_file 2M 限制PHP处理上传文件大小的最大值,此值必须小于POST_MAX_SIZE值
post_max_size 8M 限制通过POST方法可以接受信息的最大值
upload_tmp_dir NULL 上传文件的临时路径,可以是一个绝对路径
3、PHP的文件上传及资源指令
file_uploads(boolean)
是否开启HTTP POST文件上传功能
max_execution_time(integer)
PHP脚本最长执行时间
memory_limit(integer) 单位M
PHP脚本运行的最大内存
upload_max_filesize(integer) 单位M
PHP上传文件的最大尺寸
upload_tmp_dir(string)
上传文件存储的临时位置
post_max_size(integer) 单位M
HTTP POST数据的最大尺寸
4、$_FILES数组
$_FILES['userfile'][size]
获取上传文件的字节数
$_FILES['userfile']['type']
获取上传文件的MIME类型,每种MIME类型都是由“/”分隔的主类型和子类型组成
$_FILES['userfile']['error']
获取上传文件的错误代码,0:无任何错误,文件上传成功;1:上传文件大小超出了PHP配置文件中upload_max_filesize选项 限定的值;2:上传文件大小超出了HTML表单中MAX_FILE_SIZE指定的值;3:表示文件只被部分上传;4:表示没有上传任何文件。
$_FILES['userfile']['name']
获取上传文件的原始名称,包含扩展名
$_FILES['userfile']['tmp_name']
获取上传文件的临时位置名称,这是存储在临时目录中所指定的文件名。
5、文件上传函数
is_upload_file
判断指定的文件是否是通过HTTP POST上传
bool is_upload_file(string $filename)
move_upload_file
将上传文件移至新位置
bool move_upload_file(string $filename, string $destination)
注意:文件上传后,首先会存储于服务器的临时目录中,可以使用该函数将上传文件移动到新位置,与copy()和move()相比,它能检测并确保第一个参数filename指定的文件是否是合法上传的文件。
6、错误信息描述
UPLOAD_ERR_OK{value=0}
UPLOAD_ERR_INI_SIZE{value=1}
UPLOAD_ERR_FORM_SIZE{value=2}
UPLOAD_ERR_PARTIAL{value=3}
UPLOAD_ERR_NO_FILE{value=4}
UPLOAD_ERR_NO_TMP_DIR{value=6}
UPLOAD_ERR_CANT_WRITE{value=7}
二、文件下载
简单文件下载只需要使用HTML的链接标记,并将属性href的URL值指定下载的文件即可。这种方法只能处理一些浏览器不能识别的MIME类型文件。
为了提高安全性,不希望在a标签中给出文件链接,则必须向浏览器发送必要的头信息,我们可以使用如下代码。
bool touch(string $filename[, int $time[, int $time]])
bool copy(string $source, string $dest)
int file_put_contents(string $filename, string $data[, int $flag[, resource $content]])
string serialize(mixed $value)
注意:serialize()可处理除了resouce之外的任何类型。甚至可以serialize()那些包含了指向其自身引用的数组。
mixed unserialize(string $str)
string date(string format[, int timestamp]);
array getdate([int timestamp]);
mixed microtime([bool get_as_float]);
string strtolower(string $str);
string strtoupper(string $str);
string ltrim(string $str [, string $charlist]);
string rtrim(string $str[, string $chirlist]);
mixed str_ireplace(mixed $search, mixed $replace, mixed $subject, [int $count]);
mixed str_ireplace(mixed $search, mixed $replace, mixed $subject, [int $count]);
PHP文件的上传下载的更多相关文章
- 在Window的IIS中创建FTP的Site并用C#进行文件的上传下载
文件传输协议 (FTP) 是一个标准协议,可用来通过 Internet 将文件从一台计算机移到另一台计算机. 这些文件存储在运行 FTP 服务器软件的服务器计算机上. 然后,远程计算机可以使用 FTP ...
- 创建FTP的Site并用C#进行文件的上传下载
创建FTP的Site并用C#进行文件的上传下载 文件传输协议 (FTP) 是一个标准协议,可用来通过 Internet 将文件从一台计算机移到另一台计算机. 这些文件存储在运行 FTP 服务器软件的服 ...
- linux链接及文件互相上传下载
若排版紊乱可查看我的个人博客原文地址 基本操作 本篇博客主要介绍如何去链接远程的linux主机及如何实现本地与远程主机之间文件的上传下载操作,下面的linux系统是CentOS6.6 链接远程linu ...
- Spring实现文件的上传下载
背景:之前一直做的是数据库的增删改查工作,对于文件的上传下载比较排斥,今天研究了下具体的实现,发现其实是很简单.此处不仅要实现单文件的上传,还要实现多文件的上传. 单文件的下载知道了,多文件的下载呢? ...
- SocketIo+SpringMvc实现文件的上传下载
SocketIo+SpringMvc实现文件的上传下载 socketIo不仅可以用来做聊天工具,也可以实现局域网(当然你如果有外网也可用外网)内实现文件的上传和下载,下面是代码的效果演示: GIT地址 ...
- JAVAWEB之文件的上传下载
文件上传下载 文件上传: 本篇文章使用的文件上传的例子使用的都是原生技术,servelt+jdbc+fileupload插件,这也是笔者的习惯,当接触到某些从未接触过的东西时,总是喜欢用最原始的东西将 ...
- SSM框架之中如何进行文件的上传下载
SSM框架的整合请看我之前的博客:http://www.cnblogs.com/1314wamm/p/6834266.html 现在我们先看如何编写文件的上传下载:你先看你的pom.xml中是否有文件 ...
- python使用ftplib模块实现FTP文件的上传下载
python已经默认安装了ftplib模块,用其中的FTP类可以实现FTP文件的上传下载 FTP文件上传下载 # coding:utf8 from ftplib import FTP def uplo ...
- php文件夹上传下载控件分享
用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下是实例的部分脚本文件 这里我先 ...
- 使用Fileupload完成文件的上传下载
目录 使用Fileupload完成文件的上传下载 为什么需要进行文件上传下载? 引入jar包 文件上传 注意事项 编写一个简单的文件上传jsp页面 编写Servlet Student类用于封装数据,后 ...
随机推荐
- yii2单独给input或者其他标签定义class
<?= $form->field($model, 'price5', ['options' => ['class' => 'col-sm-6']])->textInput ...
- 查看文章 mysql:表注释和字段注释[转]
1 创建表的时候写注释 create table test1 ( field_name int comment '字段的注释' )comment='表的注释'; 2 修改表的注释 alter tabl ...
- linux系统文件的颜色代表的意思
1.蓝色代表目录 2.绿色代表可执行文件 3.红色代表可压缩文件 4.白色代表其他文件 5.浅蓝色代表链接文件 6.黄色代码设备 7.红色闪烁表示链接的文件有问题
- 使用EF6.0出现:CS0029 无法将类型“System.Data.Entity.Core.Objects.ObjectContext”隐式转换为“System.Data.Objects.ObjectContext”错误
这是因为EF6.0重构了一些命名空间后,和VS原有的实体数据模型模板不一致了(ObjectContext context = ((IObjectContextAdapter)dataContext). ...
- phpStorm 使用技巧大集合
之前整理了一部分使用技巧了,但是在实际操作中发现phpstorm的技巧实在是太多了,所以大部分都统一整理到这篇文字中 ,备用 插件1 1:phpstrom的插件Provides live edit H ...
- 如何解决C#编译中"csc不是内部或外部命令"的问题
安装完 VisualStudio 2010编译环境后,是不能用命令行直接编译写好的csc文件的,如果不配置环境变量,在命令提示符(cmd)中编译扩展名为cs的文件,会出现错误提示“csc不是内部或外部 ...
- [LeetCode] Super Ugly Number (Medium)
Super Ugly Number 最后WA没做出来. typedef long long int64; #define MAXBOUND 10000000 class Solution { publ ...
- op论坛,分支
http://www.arm9home.net/thread.php?fid=68 http://www.openwrt.org.cn/bbs/forum.php https://dev.openwr ...
- [主机/oracle/msyql] 监控脚本
为了方便自己测试和监控,写了三个监控的脚本. 分别监控: 主机[cpu,mem,disk,fs,net] oracle mysql 脚本如下: hmon.py: monitor Linux os sy ...
- bzoj1858
比较烦的线段树 首先询问3很弱智不说, 询问4以前做过类似的,好像是USACO月赛hotel那题类似,维护lmax,rmax,max三个域就可以了 操作0,操作1也很简单,仔细考虑一下就知道也是可以l ...