【小白笔记】PHP学习之路 (26) --文件上传与下载、配置
2014-04-12 19:44
991 查看
先补充一下几个函数:
ceil() 向上取最小的整数。
floor() 向下取最大整数。
round() 四舍五入取整。
parse_url() 解析URL,返回关联数组(host、port、path、query等)。如果某部分不存在,则不创建对应键值对。
is_uploaded_file() 判断是否为上传的文件。防止对其他文件进行处理。
move_uploaded_file() 将上传的文件移动到指定位置
mt_rand() 产生指定范围的随机数。
要进行文件上传首先要配置php.ini:
file_uploads = On 默认是打开的
upload_tmp_dir = "目录"
up_max_filesize = "大小"
max_execution_time = 时间(秒 ) set_time_limit()从该语句开始计时,只对所在脚本有效
memory_limit = xxxM 默认是128M,单个脚本最大运行内存
表单可以这样设置:
enctype=multipart/form-data
获取上传文件:
$_FILES 获取通过post方式上传文件的集合
参数errors:0 没有任何错误 1 文件大小超过了PHP.INI的配置 2 超过了前台表单指定的文件大小 3 只上传了文件的一部分 4 没有上传任何文件
多个文件上传处理:
过滤掉空数据:
使用array_filter()函数过滤数组:将数组每个元素值传递到回调函数中,如果回调函数返回真则将其包含。
配置上传目录:
is_dir()、file_exists()判断目录,mkdir()创建目录
多文件上传处理:
is_uploaded_file()
move_uploaded_file()
mt_rand()
date()
filectime()
file_put_contents()
下载文件:
1.通过超链接下载
2.通过发送header信息实现下载。
在header中也可以指定一些其他信息:
也可以指定为任意类型的二进制文件:
这时浏览器将会自动识别后缀名来决定打开方式。
简单练习:
如果没有指定header信息,则浏览器默认作为超文本文件处理。
如果表单指定了上传文件名,则每个文件及其相关信息会成为$_FILES数组的一项:
结果:
如果这样指定:
那么结果就会分类显示:
ceil() 向上取最小的整数。
floor() 向下取最大整数。
round() 四舍五入取整。
parse_url() 解析URL,返回关联数组(host、port、path、query等)。如果某部分不存在,则不创建对应键值对。
is_uploaded_file() 判断是否为上传的文件。防止对其他文件进行处理。
move_uploaded_file() 将上传的文件移动到指定位置
mt_rand() 产生指定范围的随机数。
要进行文件上传首先要配置php.ini:
file_uploads = On 默认是打开的
upload_tmp_dir = "目录"
up_max_filesize = "大小"
max_execution_time = 时间(秒 ) set_time_limit()从该语句开始计时,只对所在脚本有效
memory_limit = xxxM 默认是128M,单个脚本最大运行内存
表单可以这样设置:
enctype=multipart/form-data
获取上传文件:
$_FILES 获取通过post方式上传文件的集合
参数errors:0 没有任何错误 1 文件大小超过了PHP.INI的配置 2 超过了前台表单指定的文件大小 3 只上传了文件的一部分 4 没有上传任何文件
多个文件上传处理:
过滤掉空数据:
使用array_filter()函数过滤数组:将数组每个元素值传递到回调函数中,如果回调函数返回真则将其包含。
配置上传目录:
is_dir()、file_exists()判断目录,mkdir()创建目录
多文件上传处理:
is_uploaded_file()
move_uploaded_file()
mt_rand()
date()
filectime()
file_put_contents()
下载文件:
1.通过超链接下载
2.通过发送header信息实现下载。
header("Content-type:image/png"); //如果不知道类型,弹出窗口将会默认以浏览器打开 header("Content-Disposition:attachment;filename=a.png");
在header中也可以指定一些其他信息:
header("Accept-ranges:bytes"); header("Accept-length:".filesize('abc.doc'));
也可以指定为任意类型的二进制文件:
header("Content-type:application/ocet-stream");
这时浏览器将会自动识别后缀名来决定打开方式。
简单练习:
$file = $_GET['file']; if(file_exists($file)){ header("Contnet-type:application/ocet-stream"); $fileName = basename($file); header("Content-Disposition:attachment;filename={$fileName}"); header("Accept-ranges:bytes"); header("Accept-length:".filesize($file)); readfile($file); }else{ echo "文件错误"; }
如果没有指定header信息,则浏览器默认作为超文本文件处理。
如果表单指定了上传文件名,则每个文件及其相关信息会成为$_FILES数组的一项:
<form action="82.php" method="post" enctype="multipart/form-data"> 文件1:<input type="file" name="file1"/><br/> 文件2:<input type="file" name="file2"/><br/> 文件3:<input type="file" name="file3"/><br/> 文件4:<input type="file" name="file4"/><br/> <input type="submit" value="上传文件"/><br/> </form>
<?php echo "<pre>"; print_r($_FILES); ?>
结果:
Array ( [file1] => Array ( [name] => a.txt [type] => text/plain [tmp_name] => D:\wamp\tmp\phpA4C7.tmp [error] => 0 [size] => 1265 ) [file2] => Array ( [name] => b.txt [type] => text/plain [tmp_name] => D:\wamp\tmp\phpA4C8.tmp [error] => 0 [size] => 140 ) [file3] => Array ( [name] => c.txt [type] => text/plain [tmp_name] => D:\wamp\tmp\phpA4D8.tmp [error] => 0 [size] => 5108 ) [file4] => Array ( [name] => d.txt [type] => text/html [tmp_name] => D:\wamp\tmp\phpA4E9.tmp [error] => 0 [size] => 1689 ) )
如果这样指定:
<form action="82.php" method="post" enctype="multipart/form-data"> 文件1:<input type="file" name="file[]"/><br/> 文件2:<input type="file" name="file[]"/><br/> 文件3:<input type="file" name="file[]"/><br/> 文件4:<input type="file" name="file[]"/><br/> <input type="submit" value="上传文件"/><br/> </form>
那么结果就会分类显示:
Array ( [file] => Array ( [name] => Array ( [0] => a.txt [1] => b.txt [2] => c.txt [3] => d.txt ) [type] => Array ( [0] => text/plain [1] => text/plain [2] => text/plain [3] => text/plain ) [tmp_name] => Array ( [0] => D:\wamp\tmp\php6791.tmp [1] => D:\wamp\tmp\php6792.tmp [2] => D:\wamp\tmp\php6793.tmp [3] => D:\wamp\tmp\php6794.tmp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 ) [size] => Array ( [0] => 1265 [1] => 140 [2] => 5108 [3] => 1689 ) ) )
相关文章推荐
- 文件上传与下载学习笔记(1)---文件上传原理及配置
- [原创]java WEB学习笔记72:Struts2 学习之路-- 文件的上传下载,及上传下载相关问题
- 学习笔记2——远程连接linux服务器时SecureCRT的相关配置(包括实现对文件的上传、下载)
- 文件上传与下载学习笔记(1)---文件上传原理及配置
- 【小白笔记】PHP学习之路 (25) --文件判断与操作
- linux命令学习笔记(26):用SecureCRT来上传和下载文件
- 文件上传与下载学习笔记(1)---文件上传原理及配置
- php学习笔记(十)文件的上传与下载
- 文件上传与下载学习笔记(4)---文件下载
- 【小白笔记】PHP学习之路 (31) --cookie和session
- 【小白笔记】PHP学习之路 (18) --数组遍历、统计、计算
- Struts2.x 学习笔记 之 文件上传和下载
- 【小白笔记】PHP学习之路 (1)
- 【小白笔记】PHP学习之路 (27) --日期、时间戳的获取
- 【小白笔记】PHP学习之路 (6) --流程控制
- 【小白笔记】PHP学习之路 (7) --函数
- 【小白笔记】PHP学习之路 (8) --代码重用
- PHP移动互联网开发笔记(5)――文件的上传下载
- 【原创】Struts2学习笔记之文件的上传与下载
- cURL 学习笔记与总结(4)使用 cURL 从 ftp 上下载文件与上传文件到 ftp