php上传文件代码解析
思想;把html的input标签组织成一个数组,然后去重
关键技术涉及的函数 is_dir mkdir move_uploaded_file()
涉及的数组 预定义数组$_FILES
步骤一:检查上传文件夹是否存在,如果不存在就创建(注意!尽量使用绝对路径,否则可能上传失败)
- $targetdir = "H:\\myphpproject\\myPHP\\upresource";
- if (!is_dir($targetdir)){
- mkdir($targetdir);
- }
step2: 把html的input标签组织为数组,关键在于name属性要起做 xxxx[]的形式
- <form method="post" action="upfile.php" enctype="multipart/form-data">
- <div class="media text-muted pt-3">
- <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
- </div>
- <div class="media text-muted pt-3">
- <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
- </div>
- <div class="media text-muted pt-3">
- <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
- </div>
- <br/>
- <button type="submit" class="btn btn-success">提交</button>
- </form>
step3:对上传文件去重,并组织上传文件的数组; 关键技术 array_unique
- $arrayfile = array_unique($_FILES['myfile']['name']);
step4:循环遍历input标签获得文件名,并和目标文件夹路径组成上传文件的绝对路径
- $path = $targetdir."\\".$v;
step5:循环遍历每个input标签,上传文件 关键技术:foreach ($arrayfile as $k=>$v);上传用到 move_uploaded_file($_FILES[标签数组名][‘tmp_name’][数组索引],$v),其中tmp_name是固定用法,不必深究;$v是上传成功后,文件的绝对路径名
$res是判断上传结果的布尔型变量
- foreach($arrayfile as $k=>$v)
- {
- $path = $targetdir."\\".$v;
- if ($v)
- {
- if(move_uploaded_file($_FILES['myfile']['tmp_name'][$k],$path))
- {
- $res = TRUE;
- }
- else {
- $res=FALSE;
- }
- }
- }
整体既视感如下
html上传文件部分 ----input标签 type要设置成 file, enctype="multipart/form-data"不能省略
- <form method="post" action="upfile.php" enctype="multipart/form-data">
- <div class="media text-muted pt-3">
- <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
- </div>
- <div class="media text-muted pt-3">
- <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
- </div>
- <div class="media text-muted pt-3">
- <input type="file" class="form-control" name="myfile[]" aria-label="Amount (to the nearest dollar)">
- </div>
- <br/>
- <button type="submit" class="btn btn-success">提交</button>
- </form>
整个上传文件控制编码部分
- <?php
- $targetdir = "H:\\myphpproject\\myPHP\\upresource";
- if (!is_dir($targetdir)){
- mkdir($targetdir);
- }
- $arrayfile = array_unique($_FILES['myfile']['name']);
- $res = FALSE;
- foreach($arrayfile as $k=>$v)
- {
- $path = $targetdir."\\".$v;
- if ($v)
- {
- if(move_uploaded_file($_FILES['myfile']['tmp_name'][$k],$path))
- {
- $res = TRUE;
- }
- else {
- $res=FALSE;
- }
- }
- }
- if ($res==TRUE)
- {
- echo "文件上传成功";
- }
- else {
- echo "文件上传失败";
- }
- ?>
php上传文件代码解析的更多相关文章
- iOS上传文件代码,自定义组装body
以下代码为上传文件所用代码,简单方便,搞了好久,终于知道这么简单的方式来上传. 其它类库也就是把这几句代码封装的乱七八糟得,让你老久搞不懂原理.不就是在body上面加点字符串,body下面加点字符串, ...
- ExtJS + fileuploadfield上传文件代码
后台服务端接收文件的代码: /** * 后台上传文件处理Action */ @RequestMapping(value = "/uploadFile", method=Reques ...
- php 上传文件代码
通过 PHP,能够把文件上传到server.里面加入一些图片的推断,假设不加推断文件的类型就能够上传随意格式的文件. 为了站点的安全,肯定不让上传php文件,假设有人进入你的后台,上传了一个php文件 ...
- java上传文件代码
import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;impo ...
- PHP上传文件代码练习2 (重复文章)
表单: <html> <head> <meta http-equiv="Content-Type" content="text/html; ...
- SpringMvc通过controller上传文件代码示例
上传文件这个功能用的比较多,不难,但是每次写都很别扭.记录在此,以备以后copy用. package com.**.**.**.web.api; import io.swagger.annotatio ...
- git 和码云的上传文件代码操作
Git与Github的连接与使用 一 安装git软件 1.git介绍 ''' git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 分布式相比于集中式的最大区别在于开发 ...
- javaWeb上传文件代码
javaweb两种方式的上传,1普通上传,2:jquery ajax后台上传,部分截图如下: 完成包下载,下载后倒入myeclipse工程即可,下载地址:http://files.cnblogs.co ...
- easyui 上传文件代码
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO;usi ...
随机推荐
- Htmlunit 设置缓存文件
起因:最近用Htmlunit爬取网页.demo运行起来后,发现速度相当慢,一直在不停的加载js文件,偶尔还会报错,js超时等.抓包工具看了一下请求,发现一直在不停的下载js文件.按理说请求过js文件后 ...
- sqlalchemy映射数据库
from sqlalchemy import create_engine,Column,Integer,String from sqlalchemy.ext.declarative import de ...
- 纯css实现单选框样式
html代码 <h2>你最喜欢的水果</h2> <div class="input-radio"> <!-- 选中状态添加 checked ...
- Js 执行上下文和作用域
1.执行上下文和执行栈 执行上下文就是当前 JavaScript 代码被解析和执行时所在环境的抽象概念, JavaScript 中运行任何的代码都是在执行上下文中运行. 执行上下文的生命周期包括三个阶 ...
- linux分区知识
1.硬盘使用前,一般要分区,格式化(创建文件系统)--存放数据(极端情况下,可以不分区) 2.分区: 主分区. 扩展分区.逻辑分区 主分区+拓展分区的数量<=4,其中一个主分区可以用一个拓展分区 ...
- 多线程--CreateThread与_beginthreadex本质区别
转载 MoreWindows: 秒杀多线程第二篇 本文将带领你与多线程作第一次亲密接触,并深入分析 CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程 ...
- 大型软件公司.Net面试常见题(含答案)
1.a=10,b=15,在不用第三方变量的前提下,吧a.b互换 2.已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组 3.请简述面向对象的多态的 ...
- Struts 2访问Servlet API
在servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢? 解析:将用户名放入session 两种方案 1. 与Servlet API解耦的访问方 ...
- 【计算机网络】-介质访问子层-(信道划分介质访问控制&随机访问介质访问控制)
[计算机网络]-介质访问子层-概述 介质访问控制子层功能 解决信道争用的协议,即用于多路访问信道上确定下一个使用者的协议 是数据链路层协议的一部分 介质访问控制子层位置 位于数据链路层的底部! 信道分 ...
- LZH的多重影分身 qduoj 思维 差分
LZH的多重影分身 qduoj 思维 差分 原题链接:https://qduoj.com/problem/591 题意 在数轴上有\(n\)个点(可以重合)和\(m\)条线段(可以重叠),你可以同时平 ...