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 ...
随机推荐
- 【ASP.NET 问题】IIS发布网站后出现“检测到在集成的托管管道模式下不适用的ASP.NET设置”的解决办法
系统环境:win7 asp.net4.0网站挂到本地IIS上报错: google一下,发现N页解决方案,但是点进去一看前篇一律的解决方法是.将IIS7 下网站托管管道由继承模式修改为经典模式,这其实是 ...
- VC 字符串转化和分割
原文:点击这里. 备忘:为了适用于Unicode环境,要养成使用_T()宏的习惯 1.格式化字符串 CString s;s.Format(_T("The num is %d."), ...
- 后台设计的基石:用户权限管理(RBAC)及工作流(workflow)模型
后台产品同学在设计后台时,会发现一般后台的各个功能模块总结起来有两大类型:功能类.流程类.在设计功能或流程前都需要预判不同的使用角色对应不同权限,设计流程前则还得思考最基本的工作流原理. 用户权限是设 ...
- JeeWx捷微3.1小程序版本发布,支持微信公众号,微信企业号,支付窗——JAVA版开源微信管家
支持小程序,JeeWx捷微3.1小程序版本发布^_^ JeeWx捷微V3.1——多触点小程序版本管理平台(支持微信公众号,微信企业号,支付窗) JeeWx捷微V3.1.0版本紧跟微信小程序更新,在 ...
- setTimeout闭包常见问题
经常会遇到这样的问题,setTimeout按序输出循环数字,而不是最后输出同一个数字: 题目: for (var i = 0; i < 5; i++) { setTimeout(function ...
- 剑指offer例题——裴波那契数列
编程题:大家都知道裴波那契数列,现在要求输入一个整数n,请你输出裴波那契数列的第n项(从0开始,第0项为0).n<=39 public class Solution { public int F ...
- Redis进阶实践之四Redis的基本数据类型(转载4)
Redis进阶实践之四Redis的基本数据类型 一.引言 今天正式开始了Redis的学习,如果要想学好Redis,必须先学好Redis的数据类型.Redis为什么会比以前的Memchaed等内存缓存软 ...
- Python读取图片尺寸、图片格式
Python读取图片尺寸.图片格式 需要用到PIL模块,使用pip安装Pillow.Pillow是从PIL fork过来的Python 图片库. from PIL import Image im = ...
- ArcGIS案例学习笔记2_2_txtexcel空间可视化和空间插值
ArcGIS案例学习笔记2_2_txt/excel空间可视化和空间插值 计划时间:第二天下午 教程:pdf page=337 数据:chapter8/ex4 方法: 1.加载xy.txt和gdp.tx ...
- oracle合并语句
在sql server中的合并语句可以用xml path 详见http://www.cnblogs.com/codeyu/archive/2010/05/25/1743474.html 而oracle ...