PHP文件的上传与下载
文件上传:
1.单个与多个文件上传
2.上传表单的属性设置
3.PHP配置文件中相关文件上传的设置
4.PHP处理上传的文件数据
php.ini配置:
file_uploads = on; 默认on
upload_max_filesize = 2M; 默认2M 最大不能超过服务器内存
upload_tmp_dir = c:/uploads/ 默认为系统临时目录c:/windows/temp/ 上传文件的临时路径
post_max_size=250M;默认为8M
form表单设置:
1.文件上传控件必须放在Form表单中,必须有name属性
2.提交方式必须为POST,必须指定enctype="multipart/form-data" 用来指定表单传输数据的编码方式
<form action="php_fileupsave.php" method="post" enctype="multipart/form-data">
<input type="file" name='pic'/>
<input type="submit" value="上传"/>
<inpu type='hidden' name='MAX_FILE_SIZE' value='1000000'/>
</form>
3.建议添加标签:<inpu type='hidden' name='MAX_FILE_SIZE' value='1000'/>用于快速提示最大上传文件大小
服务器通过$_FILES接收上传文件:
$_FILES["pic"]
Array
(
[pic] => Array
(
[name] => gone.jpg 文件名
[type] => image/jpeg 文件类型
[tmp_name] => C:\Windows\temp\phpFD5.tmp 临时保存路径
[error] => 0 //错误号
[size] => 62481 //文件大小
)
)
[将临时位置的文件移动到指定的目录]
copy($_FILES['pic']['tmp_name'],'/upload/files/a.jpg')
处理上传的文件:
1.检查错误:$_FILES['pic']['error']==0
2.限制上传大小:$_FILES['pic']['size']/1024 小于5M
3.限制文件扩展名:$_FILES['pic']['type'] 只能是图片
4.重命名文件(文本文件处理文件内容)
文件下载:
1.部分文件如.rar/doc/pdf可以使用a标签加连接地址以附件形式下载
2.但是如果是txt/html/jpg/gif等网页文件和脚本文件会在浏览器直接打开
请求:
1.HTTP 1.1 协议版本
2.头信息
3.表表单信息
响应
1.状态码 200 ok
2.头信息
3.响应内容
头信息在服务器端必须在最开始添加
header("Content-Type:text/html; charset=utf8");
header("location:demo.php"); 页面重定向
<script>window.location='demo.php'</script>
告诉浏览器,将文件以附件的形式处理
header('Content-Type:image/gif'); 类型,客户端会自动检测
header(Content-Length:20000); 大小,客户端会自动检测
header('Content-Diposition: attachment; filename='a.gif');
readfile('a.gif');
服务器端:
使用$_FILES来接收文件数
HTML代码示例:
1: <?php
2: header("Content-Type:text/html; charset=utf8");
3: ?>
4: <html>
5: <head>
6: <title></title>
7: </head>
8: <body>
9: <form action="fileUpProcess.php" method="post" enctype="multipart/form-data">
10: <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
11: <input type="file" name='pic[]'/><br/>
12: <input type="file" name='pic[]'/><br/>
13: <input type="file" name='pic[]'/><br/>
14: <input type="submit" value="上传"/>
15: </form>
16: </body>
17: </html>
PHP接收处理文件代码:
1: <?php
2: header("Content-Type:text/html; charset=utf8");
3: // echo "<pre>";
4: // print_r($_FILES);
5: // echo "</pre>";
6:
7: // 1.检查错误:$_FILES['pic']['error']==0
8: if($_FILES['pic']['error']>0)
9: {
10: switch ($_FILES['pic']['error']) {
11: case 1:
12: die("文件超过了 php.ini 中 upload_max_filesize 选项限制的值");
13: case 2:
14: die("文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值");
15: case 3:
16: die("文件只有部分被上传");
17: case 4:
18: die("没有文件被上传");
19: default:
20: die("网络异常");
21: }
22: }
23: // 2.限制上传大小:$_FILES['pic']['size']/1024 小于5M
24: $maxSize = 1024*1024;
25: if($_FILES['pic']['size']>$maxSize)
26: {
27: die("上传失败,上传文件不能超过".($maxSize/1024)."M");
28: }
29:
30: // 3.限制文件扩展名:$_FILES['pic']['type'] 只能是图片
31: // image/gif
32: // image/jpeg
33: // image/png
34: /*不能精确匹配文件类型
35: list($type,$ext) = explode('/', $_FILES['pic']['type']);
36: if($type!='image'){
37: die("上传失败,只能上传图片文件");
38: }
39: */
40:
41: // 通过文件扩展名来限制:
42: //取得文件扩展名
43: $arr = explode('.', $_FILES['pic']['name']);
44: $ext = strtolower($arr[count($arr)-1]);
45:
46: $allowExt=array("png","gif","jpg","jpeg");
47: if(!in_array($ext, $allowExt))
48: {
49: die("上传失败,文件格式不正确!");
50: }
51:
52: // 4.重命名文件(文本文件处理文件内容)
53: $filePath = "";
54: $newName = date('Y').date('m').date('d').date('H').date('i').date('s').rand(100,999).'.'.$ext;
55:
56: // 5.将文件保存到指定目录
57: //判断文件是否是通过HTTP POST上传的文件
58: if(is_uploaded_file($_FILES['pic']['tmp_name'])){
59: if(move_uploaded_file($_FILES['pic']['tmp_name'], "./DownFiles/".$newName)){
60: echo "文件上传成功!";
61: }
62: }
63: else{
64: die("非上传文件");
65: }
66:
67: ?>
PHP文件的上传与下载的更多相关文章
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- 在SpringMVC框架下实现文件的 上传和 下载
在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...
- SecureCRT使用sz和rz命令进行文件的上传和下载
SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. ...
- 使用FTPClient进行文件服务器内文件的上传和下载
我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手.我在项目开发的过程中主要用到了文件的上传和下载功能,下面将我开发的代码贴出 ...
- iOS开发中文件的上传和下载功能的基本实现-备用
感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...
- Apache FtpServer 实现文件的上传和下载
1 下载需要的jar包 Ftp服务器实现文件的上传和下载,主要依赖jar包为: 2 搭建ftp服务器 参考Windows 上搭建Apache FtpServer,搭建ftp服务器 3 主要代码 在ec ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
- java web(四):request、response一些用法和文件的上传和下载
上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...
- 黏包-黏包的成因、解决方式及struct模块初识、文件的上传和下载
黏包: 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包. 只有TCP协议中才会产生黏包,UDP协议中不会有黏包(udp协议中数 ...
- 步步为营-70-asp.net简单练习(文件的上传和下载)
大文件的上传一般通过FTP协议,而一般小的文件可以通过http协议来完成 1 通过asp.net 完成图片的上传 1.1 创建html页面 注意:1 method="post" ; ...
随机推荐
- STL之vector
参考资料: 1.codeproject 2.csdn 3.cplusplus
- 用css3实现各种图标效果(1)
公共样式 应该说现在绝大多数公司的项目前端都是一团乱,不仅仅是js写的没有任何框架而言,css同样也是如此,导致项目如果要升级或者说有新的变更维护起来就特别困难. 最近领导决定花大时间整理一下css样 ...
- BZOJ3813: 奇数国
传送门 欧拉函数+线段树 因为只有60个素数,所以把状态压成long long的形式.用线段树维护区间和和区间和中有多少个质数.然后xjb搞搞就行了,具体参见代码. //BZOJ 3813 //by ...
- tmux(ubuntu14.04)编译过程遇到的错误
1. configure: error: "libevent not found" 解决方法: $ git clone https://github.com/libevent/li ...
- Bitmap四种属性
http://blog.csdn.net/rabbit_in_android/article/details/49967461 Bitmap: (1) public Bitmap (int w ...
- SSH(Struts Spring Hibernate开发框架)
Spring(Model) Spring的核心思想是IoC和AOP,Spring使得管理对象更加方便,极大的降低组件之间的耦合度,实现了软件各层之间的解耦. Struts(View) 使用Struts ...
- python学习笔记-(八)装饰器、生成器&迭代器
本节课程内容概览: 1.装饰器 2.列表生成式&迭代器&生成器 3.json&pickle数据序列化 1. 装饰器 1.1 定义: 本质上是个函数,功能是装饰其他函数—就是为其 ...
- eclipse自动部署问题
1. 使用myeclipse自动部署的方法(使用myeclipse 2015自动部署有问题,待解决)(换成2014的便可以自动部署): 1.Window->preferences->Mye ...
- Java排序算法——表插入排序
//================================================= // File Name : ListInsertSort_demo //----------- ...
- Object.prototype.toString.call() 区分对象类型
判断一个对象的类型: /** * 判断对象是否为数组 * @param {Object} source 待判断的对象 * @return {Boolean} true|false */ Object. ...