PHP文件上传与下载
一:上传文件与报错
$_FILES 超全局数组,包含了有关上传文件的所有信息!
而且,这个数组中只包含文件相关信息,其他数据依然在$_POST里面
$_FILES是一个二维数组,每上传一个文件,都是数组的一个子数组。每个子数组包含信息如下
'name' => string 'css面试题目.docx' (length=20)(上传文件名)
'type' => string 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' (length=71)
(上传文件所属的MIME类型)
'tmp_name' => string 'F:\0PHP\wamp64\tmp\php47F.tmp' (length=29)
(文件上传后在服务器存储的地址)
关于报错
'error' => int 0
0:没错
1:超过服务器限制大小。php.ini文件的upload_max_filesize
2: 超过了客户端限制大小。表单中的隐藏域name="MAX_FILE_SIZE"限制
3.文件只被上传一部分
4.文件没上传
二.上传步骤
var_dump($_FILES);
//取到文件名并用.分隔维数组
$nameArr=explode(".", $_FILES["myFile"]["name"]);
//从上述数组中取到最后一个就是上传文件的后缀名
$houzhuiming=$nameArr[count($nameArr)-1];
//取到使用当前时间+随机数的方式,随机生成文件名
$filename=date("YmdHis").rand(100,999).".".$houzhuiming;
//判断myfile里面的临时文件是不是上传过来的
if(is_uploaded_file($_FILES["myFile"]["tmp_name"])){
//将临时文件移动到服务器www根目录下的upload文件夹下
//成功返回true,否则false
$isOk=move_uploaded_file($_FILES["myFile"]["tmp_name"], $_SERVER['DOCUMENT_ROOT']."/upload".$filename);
if(!$isOk){
die("上传失败");
}
}else{
die("上传文件不合法");
}
echo "<br>文件上传成功";
三.文件下载
文件下载的类型使用MIME类型表示
下载文件的描述,如给出文件名称等
下载文件的长度以字节为单位
header():发送头信息,其前不能有任何输出
<html>
<head>
<title>ddd</title>
<head>
<body>
<form action="todo.php" method="post"
enctype=multipart/form-data>
<input type="file" name="myfile"><br>
<input type="hidden" name="MAX_FILE_SIZE"
value=100000>
<input type="submit" value="上传">
</form>
</body>
</html>
<?php
print_r($_FILES);
echo "<br>";
echo "上传文件的名称是:".$_FILES[myfile][name]."<br>";
echo "上传文件的类型是:".$_FILES[myfile][type]."<br>";
echo "上传文件的类型是:".$_FILES[myfile][tmp_name]."<br>";
$copyto="uploads/".time().$_FILES[myfile][name]; //加上时间或随机数,防止别人利用上传的文件搞破坏
if($_FILES[myfile][error]>0)
{
switch($_FILES[myfile][error])
{
case 1:
echo "上传的文件超过了php.ini中upload_max_filesize的值<br>";
break;
case 2:
echo "上传文件超过了HTML表单的max_file_size的值<br>";
break;
case 3:
echo "文件被部分上传<br>";
break;
case 4:
echo "没有文件上传<br>";
break;
}
exit;
}else
{
if(is_loaded_file($_FILES[myfile][tmp_name]))
{
if(move_uploaded_file($_FILES[myfile][tmp_name],$copyto))
{
echo "拷贝成功<br>";
}else
{
echo "拷贝失败<br>";
}
}
}
echo "上传文件大小为".$_FILES[myfile][size];
?>
PHP文件上传与下载的更多相关文章
- java web学习总结(二十四) -------------------Servlet文件上传和下载的实现
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- (转载)JavaWeb学习总结(五十)——文件上传和下载
源地址:http://www.cnblogs.com/xdp-gacl/p/4200090.html 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传 ...
- JavaWeb学习总结,文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- java文件上传和下载
简介 文件上传和下载是java web中常见的操作,文件上传主要是将文件通过IO流传放到服务器的某一个特定的文件夹下,而文件下载则是与文件上传相反,将文件从服务器的特定的文件夹下的文件通过IO流下载到 ...
- 使用jsp/servlet简单实现文件上传与下载
使用JSP/Servlet简单实现文件上传与下载 通过学习黑马jsp教学视频,我学会了使用jsp与servlet简单地实现web的文件的上传与下载,首先感谢黑马.好了,下面来简单了解如何通过使用 ...
- JavaWeb学习总结(五十)——文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- 文件上传和下载(可批量上传)——Spring(三)
在文件上传和下载(可批量上传)——Spring(二)的基础上,发现了文件下载时,只有在Chrome浏览器下文件名正常显示,还有发布到服务器后,不能上传到指定的文件夹目录,如上传20160310.txt ...
- 文件上传和下载(可批量上传)——Spring(二)
针对SpringMVC的文件上传和下载.下载用之前“文件上传和下载——基础(一)”的依然可以,但是上传功能要修改,这是因为springMVC 都为我们封装好成自己的文件对象了,转换的过程就在我们所配置 ...
- Struts2 之 实现文件上传和下载
Struts2 之 实现文件上传和下载 必须要引入的jar commons-fileupload-1.3.1.jar commons-io-2.2.jar 01.文件上传需要分别在struts.xm ...
- 基于jsp的文件上传和下载
参考: 一.JavaWeb学习总结(五十)--文件上传和下载 此文极好,不过有几点要注意: 1.直接按照作者的代码极有可能listfile.jsp文件中 <%@taglib prefix=&qu ...
随机推荐
- VirtualAlloc申请进程空间
https://baike.baidu.com/item/VirtualAlloc 百度百科 https://msdn.microsoft.com/zh-cn/library/window ...
- Python调用外部系统命令
利用Python调用外部系统命令的方法可以提高编码效率.调用外部系统命令完成后可以通过获取命令执行返回结果码.执行的输出结果进行进一步的处理.本文主要描述Python常见的调用外部系统命令的方法,包括 ...
- 构造函数,C++内存管理,内存泄漏定位
构造函数 1.构造顺序 虚基类构造函数,基类构造函数,类对象构造函数,自己的构造函数 2.必须使用初始化列表 (1) 引用成员,常量成员: (2) 基类没默认构造函数(自己重载覆盖了), (3)类对象 ...
- 运行vue项目--安装vue脚手架vue cli
第一步. 安装node: 官网下载node的.pkg,下载地址,选择相应版本进行下载 mac终端下输入npm -v 和 node -v, 出现相应版本号即安装成功. 若均提示 command not ...
- Google 2013笔试题一
2.1 给定三个整数a,b,c,实现 int median(int a, int b, int c),返回三个数的中位数,不可使用sort,要求整数操作(比较,位运算,加减乘除等)次数尽量少,并分析说 ...
- [Nginx]实战Nginx:Nginx的一些介绍
------------------------------------------------------------------------------------------------ 首先列 ...
- GIS案例学习笔记-明暗等高线提取地理模型构建
GIS案例学习笔记-明暗等高线提取地理模型构建 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:针对数字高程模型,通过地形分析,建立明暗等高线提取模型,生成具有 ...
- 传输层——UDP报文头介绍
16位源端口 16位目的端口 16位总长度 16位校验和 数据 源端口:长度为16位,2个字节. 目的端口:长度为16位,2个字节. 总长度:长度为16位,2个字节,表示 UDP包头长度 和 数据长度 ...
- maven 创建war类型项目
1. 创建maven project时选择packaging为war 2. 在webapp文件夹下新建META-INF和WEB-INF/web.xml 3. 在pom.xml中添加web项目需要的ja ...
- 吴裕雄 python 爬虫(1)
from urllib.parse import urlparse url = 'http://www.pm25x.com/city/beijing.htm' o = urlparse(url) pr ...