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 ...
随机推荐
- react中处理后台接口返回存在html标签的字符串
render{ return( <div> <div>接下来是例子</div> <div dangerouslySetInnerHTML={{__html:& ...
- Django 字段更新时报错
字段更新时会报错: -------------------------------------------------------------- 无法向未定义字段添加默认值您确认添加默认值吗? 请添加 ...
- 【案例分享】使用ActiveReports报表工具,在.NET MVC模式下动态创建报表
提起报表,大家会觉得即熟悉又陌生,好像常常在工作中使用,又似乎无法准确描述报表.今天我们来一起了解一下什么是报表,报表的结构.构成元素,以及为什么需要报表. 什么是报表 简单的说:报表就是通过表格.图 ...
- 什么是云服务器ECS
云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越.稳定可靠.弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务.云服 ...
- 【pytorch】学习笔记(一)-张量
pytorch入门 什么是pytorch PyTorch 是一个基于 Python 的科学计算包,主要定位两类人群: NumPy 的替代品,可以利用 GPU 的性能进行计算. 深度学习研究平台拥有足够 ...
- Docker学习1
命名空间(Namesaoces):Linux内核提供的一种对进程资源隔离的机制,例如网络.进程.挂载点等资源. 控制组(CGroups):Linux内核提供的一种限制进程资源的机制:例如CPU.内存等 ...
- sql server 函数详解(5)系统函数
返回表中指定字段的长度 返回表中指定字段的名称 返回数据表达式的数据的实际长度函数 返回数据库的编号 返回数据库的名称 返回数据库当前默认的null值 返回服务器端计算机的标识号 返回服务 ...
- sql server len函数
len函数 --返回字符表达式中的字符数 --如果字符串中包含前导空格和尾随空格,则函数将它们包含在内 --LEN对相同的单字节和双字节字符串返回相同的值 --示例:select LEN('no'), ...
- C# 面向对象2 (类的语法)
1.类 语法: [public] class 类名 { 字段; 属性; 方法; } **类名首字母必须大写 2.创建对象 创建这个类的对象过程称之为类的实例化,关键字:new this:表示当前这个类 ...
- django-Auth模块(详细介绍)
转载自https://www.cnblogs.com/liuqingzheng/articles/9628105.html 1 Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们 ...