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 ...
随机推荐
- 【Source Insight 】之marco学习笔记1
我们学习编程语言都是从Hello World!,现在我们学习marco也不例外 打开C:\Users\%USERPROFILE%\Documents\Source Insight 4.0\Projec ...
- Executors.newSingleThreadScheduledExecutor();线程池中放入多个线程问题
转自:https://blog.csdn.net/u012062455/article/details/78247234/
- ubuntu简单安装apache
环境: ubuntu 目标: 1.安装web服务器apache 2.打开浏览器,访问自己的web服务器,看到 Hello,World! 开始动手了! 安装sudo apt-get install ap ...
- 机器学习进阶-图像金字塔与轮廓检测-模板匹配(单目标匹配和多目标匹配)1.cv2.matchTemplate(进行模板匹配) 2.cv2.minMaxLoc(找出矩阵最大值和最小值的位置(x,y)) 3.cv2.rectangle(在图像上画矩形)
1. cv2.matchTemplate(src, template, method) # 用于进行模板匹配 参数说明: src目标图像, template模板,method使用什么指标做模板的匹配 ...
- css- 范围选择
1.子元素范围选择 举例 .iconList_wr li:nth-child(n + 1):nth-child(-n + 4) { margin-right: 0.6rem; } .iconList_ ...
- 一例对一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性的解决
这个问题相信只要是做MVC的,都碰到过,也都知道错误的原因,就是触发了定义的实例字段校验规则.比如定义的不为空,但是为空了,或者定义的字段长度为50,但是超过50了. 可是有时虽然知道是这样,但是具体 ...
- css:margin和padding的百分之使用
#app { position: fixed; width: 94%; height: 100%; background: pink; padding: 0px 3% 0px 3%;} 如上代码,最终 ...
- ACM__最小生成树之prime
今天做了一道题,根本没想到最小生成树,稀里糊涂的浪费了很多时间,复习一下 转载自https://www.cnblogs.com/zhangming-blog/p/5414514.html Prim算法 ...
- Haskell语言学习笔记(72)Free Monad
安装 free 包 $ cabal install free Installed free-5.0.2 Free Monad data Free f a = Pure a | Free (f (Fre ...
- 虚拟机安装VMware tools
选择虚拟机菜单栏--安装VMware tools 2 然后在CentOS系统中弹出的VMware tools窗口中 右击VMwaretools-9.6.0-1294478.tar.gz 解压缩到 3 ...