思想;把html的input标签组织成一个数组,然后去重

关键技术涉及的函数 is_dir mkdir move_uploaded_file()

涉及的数组 预定义数组$_FILES

步骤一:检查上传文件夹是否存在,如果不存在就创建(注意!尽量使用绝对路径,否则可能上传失败)

  1. $targetdir = "H:\\myphpproject\\myPHP\\upresource";
  2. if (!is_dir($targetdir)){
  3. mkdir($targetdir);
  4. }

step2: 把html的input标签组织为数组,关键在于name属性要起做 xxxx[]的形式

  1. <form method="post" action="upfile.php" enctype="multipart/form-data">
  2. <div class="media text-muted pt-3">
  3. <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
  4. </div>
  5. <div class="media text-muted pt-3">
  6. <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
  7. </div>
  8. <div class="media text-muted pt-3">
  9. <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
  10. </div>
  11. <br/>
  12. <button type="submit" class="btn btn-success">提交</button>
  13. </form>

step3:对上传文件去重,并组织上传文件的数组; 关键技术 array_unique

  1. $arrayfile = array_unique($_FILES['myfile']['name']);

step4:循环遍历input标签获得文件名,并和目标文件夹路径组成上传文件的绝对路径

  1. $path = $targetdir."\\".$v;

step5:循环遍历每个input标签,上传文件 关键技术:foreach ($arrayfile as $k=>$v);上传用到 move_uploaded_file($_FILES[标签数组名][‘tmp_name’][数组索引],$v),其中tmp_name是固定用法,不必深究;$v是上传成功后,文件的绝对路径名

$res是判断上传结果的布尔型变量

  1. foreach($arrayfile as $k=>$v)
  2. {
  3. $path = $targetdir."\\".$v;
  4. if ($v)
  5. {
  6. if(move_uploaded_file($_FILES['myfile']['tmp_name'][$k],$path))
  7. {
  8. $res = TRUE;
  9. }
  10. else {
  11. $res=FALSE;
  12. }
  13. }
  14. }

整体既视感如下

html上传文件部分  ----input标签 type要设置成 file, enctype="multipart/form-data"不能省略

  1. <form method="post" action="upfile.php" enctype="multipart/form-data">
  2. <div class="media text-muted pt-3">
  3. <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
  4. </div>
  5. <div class="media text-muted pt-3">
  6. <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
  7. </div>
  8. <div class="media text-muted pt-3">
  9. <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
  10. </div>
  11. <br/>
  12. <button type="submit" class="btn btn-success">提交</button>
  13. </form>

整个上传文件控制编码部分

  1. <?php
  2. $targetdir = "H:\\myphpproject\\myPHP\\upresource";
  3. if (!is_dir($targetdir)){
  4. mkdir($targetdir);
  5. }
  6. $arrayfile = array_unique($_FILES['myfile']['name']);
  7. $res = FALSE;
  8. foreach($arrayfile as $k=>$v)
  9. {
  10. $path = $targetdir."\\".$v;
  11. if ($v)
  12. {
  13. if(move_uploaded_file($_FILES['myfile']['tmp_name'][$k],$path))
  14. {
  15. $res = TRUE;
  16. }
  17. else {
  18. $res=FALSE;
  19. }
  20. }
  21. }
  22. if ($res==TRUE)
  23. {
  24. echo "文件上传成功";
  25. }
  26. else {
  27. echo "文件上传失败";
  28. }
  29. ?>

php上传文件代码解析的更多相关文章

  1. iOS上传文件代码,自定义组装body

    以下代码为上传文件所用代码,简单方便,搞了好久,终于知道这么简单的方式来上传. 其它类库也就是把这几句代码封装的乱七八糟得,让你老久搞不懂原理.不就是在body上面加点字符串,body下面加点字符串, ...

  2. ExtJS + fileuploadfield上传文件代码

    后台服务端接收文件的代码: /** * 后台上传文件处理Action */ @RequestMapping(value = "/uploadFile", method=Reques ...

  3. php 上传文件代码

    通过 PHP,能够把文件上传到server.里面加入一些图片的推断,假设不加推断文件的类型就能够上传随意格式的文件. 为了站点的安全,肯定不让上传php文件,假设有人进入你的后台,上传了一个php文件 ...

  4. java上传文件代码

    import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;impo ...

  5. PHP上传文件代码练习2 (重复文章)

    表单: <html> <head> <meta http-equiv="Content-Type" content="text/html; ...

  6. SpringMvc通过controller上传文件代码示例

    上传文件这个功能用的比较多,不难,但是每次写都很别扭.记录在此,以备以后copy用. package com.**.**.**.web.api; import io.swagger.annotatio ...

  7. git 和码云的上传文件代码操作

    Git与Github的连接与使用 一 安装git软件 1.git介绍 ''' git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.​ 分布式相比于集中式的最大区别在于开发 ...

  8. javaWeb上传文件代码

    javaweb两种方式的上传,1普通上传,2:jquery ajax后台上传,部分截图如下: 完成包下载,下载后倒入myeclipse工程即可,下载地址:http://files.cnblogs.co ...

  9. easyui 上传文件代码

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO;usi ...

随机推荐

  1. Htmlunit 设置缓存文件

    起因:最近用Htmlunit爬取网页.demo运行起来后,发现速度相当慢,一直在不停的加载js文件,偶尔还会报错,js超时等.抓包工具看了一下请求,发现一直在不停的下载js文件.按理说请求过js文件后 ...

  2. sqlalchemy映射数据库

    from sqlalchemy import create_engine,Column,Integer,String from sqlalchemy.ext.declarative import de ...

  3. 纯css实现单选框样式

    html代码 <h2>你最喜欢的水果</h2> <div class="input-radio"> <!-- 选中状态添加 checked ...

  4. Js 执行上下文和作用域

    1.执行上下文和执行栈 执行上下文就是当前 JavaScript 代码被解析和执行时所在环境的抽象概念, JavaScript 中运行任何的代码都是在执行上下文中运行. 执行上下文的生命周期包括三个阶 ...

  5. linux分区知识

    1.硬盘使用前,一般要分区,格式化(创建文件系统)--存放数据(极端情况下,可以不分区) 2.分区: 主分区. 扩展分区.逻辑分区 主分区+拓展分区的数量<=4,其中一个主分区可以用一个拓展分区 ...

  6. 多线程--CreateThread与_beginthreadex本质区别

    转载 MoreWindows: 秒杀多线程第二篇 本文将带领你与多线程作第一次亲密接触,并深入分析 CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程 ...

  7. 大型软件公司.Net面试常见题(含答案)

    1.a=10,b=15,在不用第三方变量的前提下,吧a.b互换 2.已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组 3.请简述面向对象的多态的 ...

  8. Struts 2访问Servlet API

    在servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢? 解析:将用户名放入session 两种方案 1. 与Servlet API解耦的访问方 ...

  9. 【计算机网络】-介质访问子层-(信道划分介质访问控制&随机访问介质访问控制)

    [计算机网络]-介质访问子层-概述 介质访问控制子层功能 解决信道争用的协议,即用于多路访问信道上确定下一个使用者的协议 是数据链路层协议的一部分 介质访问控制子层位置 位于数据链路层的底部! 信道分 ...

  10. LZH的多重影分身 qduoj 思维 差分

    LZH的多重影分身 qduoj 思维 差分 原题链接:https://qduoj.com/problem/591 题意 在数轴上有\(n\)个点(可以重合)和\(m\)条线段(可以重叠),你可以同时平 ...