文件的上传与下载是项目中必不可少的模块,也是php最基础的模块之一,大多数php框架中都封装了关于上传和下载的功能,不过对于原生的上传下载还是需要了解一下的。基本思路是通过form表单post方式实现文件上传,通过流输出的方式实现文件下载。以下分别讲述实现的具体细节。

一、文件的上传

主要用到一个超全局数组:$_FILES,是一个包含五个上传信息的二维数组,如下所示

array(2) {
["pic"]=>
array(5) {
["name"]=>
string(40) "0ec5972b-ec68-4c49-8504-03a9a3b470c8.jpg"
["type"]=>
string(0) ""
["tmp_name"]=>
string(0) ""
["error"]=>
int(2)
["size"]=>
int(0)
}
["pic1"]=>
array(5) {
["name"]=>
string(36) "2F5FB17A626C79D7AB7C362E840C8315.jpg"
["type"]=>
string(10) "image/jpeg"
["tmp_name"]=>
string(27) "C:\Windows\Temp\php208E.tmp"
["error"]=>
int(0)
["size"]=>
int(48516)
}
} 其中

1. name:上传文件名
2. type:文件类型 常见的有图片("image/jpeg","image/jeg","image/png","image/gif")
3. tmp_name: 上传成功后的临时文件名
4. error: 和该文件上传相关的错误代码
5. size:上传文件的大小

其中pic、pic1是上传文件的表单项名,可以任意指定

一般是在一个index.php文件中浏览上传后的图片,并提供上传表单 注意:上传表单中发送方式必须是post,类型enctype:multipart/form-data

实现步骤一般有六步:1.获取上传文件信息 2.过滤上传文件的错误号 3.本次上传文件大小的过滤(自己选择)4.过滤文件类型5.上传后的文件名定义(随机获取一个文件名并且保持后缀名不变)6.执行文件上传 代码在此就不贴出了。

二、文件的下载

文件的下载一般有两种方式:1.通过超链接实现。地址为文件的地址 ,适用于浏览器解析不了的文件。像压缩文件、脚本文件等。假如文件是图片或者txt文档,就会直接在浏览器中打开,一般不建议用这种方式实现下载功能。

2.通过流输出,php使用header()函数发送网页的头部信息给浏览器,该函数接收一个头信息的字符串作为参数。文件下载需要发送的头信息包括以下三部分,通过调用三次header()函数完成。本文通过图片下载为例讲述实现过程。主要步骤有:1.获取要下载的文件名(加上路径);2.重设响应类型;3.执行下载的文件名;4.指定文件的大小;5.响应内容。代码如下:download.php

<?php

//1.获取要下载的文件名(加上路径)
$file="./uploads/".$_GET["name"];//通过设置超链接download.php?name={$f},用$_GET获取地址栏参数name获取文件名
//2.重设响应类型
//echo '<pre>';var_dump(getimagesize($file));exit;
$info=getimagesize($file);
header("Content-type:".$info["mime"]);
//3.执行下载的文件名
header("Content-Disposition:attachment;filename=".$_GET["name"]);
//4.指定文件的大小
header("Content-Length:".filesize($file));
//5.响应内容
readfile($file);

php实现文件上传下载功能小结的更多相关文章

  1. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  2. JavaWeb实现文件上传下载功能实例解析 (好用)

    转: JavaWeb实现文件上传下载功能实例解析 转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web ...

  3. WEB文件上传下载功能

    WEB文件上传下载在日常工作中经常用到的功能 这里用到JS库 http://files.cnblogs.com/meilibao/ajaxupload.3.5.js 上传代码段(HTML) <% ...

  4. Struts2实现文件上传下载功能(批量上传)

    今天来发布一个使用Struts2上传下载的项目, struts2为文件上传下载提供了好的实现机制, 首先,可以先看一下我的项目截图 关于需要使用的jar包,需要用到commons-fileupload ...

  5. 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现

    ----------------------------------------------------------------------------------------------[版权申明: ...

  6. C# 文件上传下载功能实现 文件管理引擎开发

    Prepare 本文将使用一个NuGet公开的组件技术来实现一个服务器端的文件管理引擎,提供了一些简单的API,来方便的实现文件引擎来对您自己的软件系统的文件进行管理. 在Visual Studio ...

  7. javaweb项目中的文件上传下载功能的实现

    框架是基于spring+myBatis的. 前台页面的部分代码: <form action="${ctx}/file/upLoadFile.do"method="p ...

  8. FasfDFS整合Java实现文件上传下载功能实例详解

    https://www.jb51.net/article/120675.htm 在上篇文章给大家介绍了FastDFS安装和配置整合Nginx-1.13.3的方法,大家可以点击查看下. 今天使用Java ...

  9. 利用Django REST framework快速实现文件上传下载功能

    安装包 pip install Pillow 设置 首先在settings.py中定义MEDIA_ROOT与MEDIA_URL.例如: MEDIA_ROOT = os.path.join(BASE_D ...

随机推荐

  1. LAMP安装各种问题解决方案

    LAMP环境配置安装注意安装步骤及说明事项. LAMP安装各种问题解决 1. 访问ftp报错 解决: 关闭selinux vi /etc/selinux/config 内容修改为: selinux=d ...

  2. CSS3绘制弹球动画效果

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  3. HTML5基础知识(4)--white-space属性

    1.white-space 属性设置如何处理元素内的空白. 这个属性声明建立布局过程中如何处理元素中的空白符.值 pre-wrap 和 pre-line 是 CSS 2.1 中新增的. 默认值: no ...

  4. android请求root权限

    应用获取Root权限的原理:让应用的代码执行目录获取最高权限.在Linux中通过chmod 777 [代码执行目录] //请求root权限    public static boolean upgra ...

  5. 查看本机ip

    视窗+R  然后输入cmd, enter 后再黑色窗口里输入  ipconfig

  6. jsrender for object

    <div id="result"></div> <script id="theTmpl" type="text/x-js ...

  7. 常用jquery片断

    **1.检测Internet Explorer版本** 当涉及到CSS设计时,对开发者和设计者而言Internet Explorer一直是个问题.尽管IE6的黑暗时代已经过去,IE也越来越不流行,它始 ...

  8. 【BNUOJ19500】 Matrix Decompressing

    https://www.bnuoj.com/v3/problem_show.php?pid=19500 (题目链接) 题意 给出一个R行C列的正整数矩阵,设前${A_i}$项为其前i行所有元素之和,$ ...

  9. 【bzoj2730】 HNOI2012—矿场搭建

    http://www.lydsy.com/JudgeOnline/problem.php?id=2730 (题目链接) 题意 给出一张图,问如果删掉其中一个点,使得其他每个节点都有一个安全撤离的出口, ...

  10. MVC重写DefaultModelBinder实现自定义模型绑定

    在编写前台页面的时候为了使url传递参数的简短,比如personId="1"  我们通过url传递成pid=1  那么在后台action方法接受的模型Person类 的属性为per ...