php实现文件上传与下载(上)

时间:2022-10-04 12:25:24

php实现文件的上传与下载是一个挺基本的功能,一般网站多多少少都会有这样的需求在内,当然不是说所有的文件都可以被上传,那这网络就太没有安全性可言了。因为接触php时间不长,今天写练练手,随笔也就是公开记录而已啦。

文件上传:也就是将客户端的文件上传到服务器端,在将服务器端的临时文件移动到指定目录即可。主要思维就是先定义获取$_FILES中的二维数组变量,可以每次都用二维数组获取,也可以将第一维的放入一个数组变量中,然后每次获取该数组变量中的值,简化代码量----> 判断错误号是否为0或者是UPLOAD_ERR_OK为真时表示没有错误,可以上传----->将服务器上的临时文件移动到我们的指定目录下,叫什么名字,移动成功返回true,用move_uploaded_file($临时文件名,$目的地)----->另外一种方式就是用copy($临时变量名,$目的地)函数;

  • $_FILES中保存这儿上传文件的信息,这是一个二维数组,第一维当然就是上传进来的文件的名称了,第二维就是该文件的相关信息了,上传之后就可以打印该数组中的参数进行查看---用print_r($_FILES),可以看到里边的内容有:
    • name:上传文件的名称;
    • type:上传文件的MIME类型;
    • tmp_name:上传到服务器上的临时文件名;//很重要的,因为以后在服务器上操纵的就是这个文件
    • size:上传文件的大小;
    • error:上传文件的错误号,成功为0,。

服务器端配置---php.ini:

  • file_uploads=on,支持http上传;
  • upload_tmp_dir=,临时文件保存的目录;
  • upload_max_filesize=  2M ;允许上传文件的大小;
  • max_file_uploads=20; 允许一次上传文件数目,默认为20;
  • max_execution_time=-1;设置脚本被解析终止之前允许的最大执行秒数,防止程序太差(例如死循环)而占尽服务器资源;
  • max_input_time=60;脚本解析输入数据允许的最大秒数;
  • max_input_nesting_level=64,设置输入变量的嵌套深度;
  • max_input_vars=60;接受多少输入的变量,减轻dos攻击的可能性,如果超过指定数量的变量,将会导致E_WARNING的产生,更多的输入变量将会从请求中截断;
  • memory_limit=128M。最大单线程的独立内存使用量,也就是一个web请求,给予线程的最大内存使用量的定义。

还有一些错误信息说明,基本都是英文的字面意思,找不见临时目录啊大小超过限制啊之类的共8中错误信息,分别对应数字0-8但是没有数字5,在代码里进行判定输出,按照一一对应的,可以用switch……case,共7个case(0表示成功就不用写了)来表示输出错误信息。在代码中进行判定,如果没错误输出的话,就进行上传操作。

客户端的一些配置---但是在客户端的配置很多时候并不能真正起到限制作用,真正想限制都是要配置在服务端的:

  • 通过表单隐藏域限制上传文件的最大值    <input type="hidden" name="MAX_FILE_SIZE" value="字节数" />
  • 通过accept属性限制上传文件类型  <input type="file" name="myFile" accept="文件的MIME类型" />

在这个练手的过程中,我没有认识到一点,form表单最大上传限制(程序中的判定)和底层php的判定(php.ini中),因此如果我表单的最大上传限制为2M,而php.ini中的判定是10M,这样在我上传文件大小超过10M时肯定就直接提示代码错误,而当上传文件大小介于2M和10M之间时,程序可以执行,按照判定输出对应的错误信息。

php实现文件上传与下载(上)的更多相关文章

  1. JavaWeb -- Struts1 多文件上传与下载 DownloadAction, DispatchAction

    1. 多文件上传与下载 上传下载jsp: <%@ page language="java" import="java.util.*" pageEncodi ...

  2. java客户端文件的上传和下载

    java客户端文件的上传和下载 //上传 public JTable upload(String id){ JTable table=new JTable(); System.out.println( ...

  3. Java Web 学习&lpar;8&rpar; —— Spring MVC 之文件上传与下载

    Spring MVC 之文件上传与下载 上传文件 表单: <form action="upload" enctype="multipart/form-data&qu ...

  4. Java实现FTP文件与文件夹的上传和下载

    Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...

  5. java web学习总结&lpar;二十四&rpar; -------------------Servlet文件上传和下载的实现

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  6. Struts2入门&lpar;七&rpar;——Struts2的文件上传和下载

    一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST" ...

  7. 【JavaWeb学习】文件的上传和下载

    一.文件上传 1.1.概述 实现web开发中的文件上传功能,需完成如下二步操作: 在web页面中添加上传输入项 在servlet中读取上传文件的数据,并保存到本地硬盘中 如何在web页面中添加上传输入 ...

  8. SecureCRT上传和下载文件

    SecureCRT上传和下载文件(下载默认目录) SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. ...

  9. SpringMVC文件上传和下载

    上传与下载 1文件上传 1.1加入jar包 文件上传需要依赖的jar包 1.2配置部件解析器 解析二进制流数据. <?xml version="1.0" encoding=& ...

随机推荐

  1. ASP&period;NET MVC 应用,站点发布到本地IIS

    材料准备 visual studio 2013 , iis 7 具体步骤 1.以管理员身份启动visual studio 2.新建项目 web app 或者站点 3.编译项目 4.右击项目选择publ ...

  2. ios创建二维码

    #import "LCTwoCodeImage.h" @implementation LCTwoCodeImage +(UIImage *) GotoCreatMyTwoCode ...

  3. Visual Studio的Web Performance Test提取规则详解(1)

    总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...

  4. 何为&OpenCurlyDoubleQuote;精通Java”

    何为精通Java?本来Java仅仅是一门语言,但从应用技术的角度来看,精通Java是可以无边无际的.很可能你可以对James说:我精通J2EE.JVM.Java服务器.大数据等等一些和Java相关的应 ...

  5. 微信公众平台开发接口PHP SDK完整版

    <?php /* 方倍工作室 http://www.fangbei.org/ CopyRight 2015 All Rights Reserved */ define("TOKEN&q ...

  6. OpenCV——Haar-like特征

    Haar-like特征--即Haar特征,是计算机视觉领域一种常用的特征描述算子.它最早用于人脸描述. 目前常用的Haar-like特征可以分为以下几类:线性特征.边缘特征.点特征(中心特征).对角线 ...

  7. Java 序列化 序列化与单例模式 &lbrack; 转载 &rsqb;

    Java 序列化 序列化与单例模式 [ 转载 ] @author Hollis 本文将通过实例+阅读Java源码的方式介绍序列化是如何破坏单例模式的,以及如何避免序列化对单例的破坏. 单例模式,是设计 ...

  8. 项目中引入composer

    众所周知,composer可以自定义加载插件库和依赖,它也是用PHP写的,怎样在自己的项目中引入并使用composer呢?. 1.新建一个项目,在项目的根目录创建composer.json文件,用过一 ...

  9. javascript之Style对象

    Background 属性 属性                                 描述 background                      在一行中设置所有的背景属性 ba ...

  10. bat实现往hosts文件追加内容

    做个笔记. @echo off ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::: ...