思想;把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上传文件代码解析的更多相关文章

  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. js动态修改浏览器title

    script标签依据浏览框的失焦获焦进行函数操作(操作简单放到HTML文件下的head标签下就可以) <script> window.onfocus = function () { doc ...

  2. linux如何设置磁盘配额?

    环境:CentOS7 需求:  zhang3 用户在  /dev/sdb1  上,只能使用100M的空间,建立 200个文件. 注意事项:XFS  不能对  /   开启配额             ...

  3. WCF客户端代理

    创建类库WCFServiceProxy 添加System.ServiceModel.WCFService(见上篇文章)引用 创建类:BookServiceClient using System; us ...

  4. elk 概念整理 集群状态 - yellow - 面试的问题 -- 官方配置文档 水平扩容以及数据保障

    1. primary shard   -- raid0 2.replicas shard -- raid1 3.index -- 图书馆的借书指引 4.MySQL vs elasticsearch # ...

  5. 菜鸟系列k8s——k8s快速入门(1)

    k8s快速入门 1.快速创建k8s集群 参考网站:https://kubernetes.io/docs/tutorials/kubernetes-basics 点击教程菜单 1. Create a C ...

  6. 最短meeting路线(树的直径)--牛客第四场(meeting)

    题意: 给你一棵树,树上有些点是有人的,问你选一个点,最短的(最远的那个人的距离)是多少. 思路: 其实就是树的直径,两遍dfs,dfs第二遍的时候遇到人就更新直径就行了,ans是/2,奇数的话+1. ...

  7. Memcached安装 常用指令

    Memcached 源码安装 # 安装依赖yum install -y gcc gcc-c++ automake autoconf make cmake libevent-devel.x86_64# ...

  8. 纯CSS3绘制神奇宝贝伊布动画特效

    在线演示       本地下载

  9. Java——BufferedImage对象

    BufferedImage对象中最重要的两个组件是Raster与ColorModel,分别用于存储图像的像素数据和颜色数据. 1.Raster对象的作用与像素存储 BufferedImage支持从Ra ...

  10. hbase启动后HMaster几秒后死掉

    通过 http://s128:16010 无法访问Hbase Web端 查看master日志,有报错: 2019-08-30 16:27:35,137 ERROR [master/s128:16000 ...