文件上传及时显示, 前端js和后端php相互结合使用
文件读取
javascript
绑定文件上传变化事件 onchange
利用window对象 FileReader
- 调用方法  readerAsDataURL
- onload 方法 异步读取
 
- 属性:files- 获取到上传的文件 - files[0]- <form action="***.php" method="post" enctype="multipart/form-data" >
 <input type="file" name="img" id="pic" multiple>
 <img src="javascript:;" alt="">
 </form>
 <script>
 var pic = document.querySelector('#pic');
 pic.onchange = function() { //多文件同时显示
 for (var i = 0; i < pic.files.length; i++) {
 var reader = new FileReader();
 reader.readAsDataURL(pic.files[i]);
 reader.onload = function(e) {
 var img = document.createElement('img');
 document.querySelector('form').appendChild(img);
 img.src = e.target.result;
 }
 }
 }
 </script>
 
 
php
form表单设置 metho='post' enctype="multipart/form-data'
- 前端
 ```
```
* 后端
    * 单文件上传
    * 多文件上传
        * 单文件上传的判断条件 `封装`
            function judge($files, $url,$i) {
            //    mime类型判断
                $fileinfo = finfo_open(FILEINFO_MIME_TYPE);
                $fileResult = finfo_file($fileinfo, $files['tmp_name']);
            //    假设是相册判断
                $type = strchr($fileResult, '/', true);
                if ($type == 'image') {
                    echo '文件类型符合';
                }
                //文件上传达到各类要求
                if ($files['error'] == 0 && is_uploaded_file($files['tmp_name'])) {
            //        给上传文件重新取名
                    $str = strrchr($files['name'], '.');
                    $newPath = $url.date('YmdHis-').mt_rand(100, 999).$str;
                    if (move_uploaded_file($files['tmp_name'], $newPath)) {
                        echo '上传成功';
                    } else {
                        echo $files[$i]['name'].'上传失败';
                    }
                }
            }
    * 数组降维 这个每个里面都已经是单个文件的所有信息,可以调用方法进行判断
            $newArr = [];
            foreach($file as $k => $v) {
                foreach($v as $key => $value) {
                    $newArr[$key][$k] = $value;
                }
            }
总结:
- php 和 JavaScript 的一些功能相当类似
文件上传及时显示, 前端js和后端php相互结合使用的更多相关文章
- 【原创】用JAVA实现大文件上传及显示进度信息
		用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/grayprince/UploadBigFil ... 
- Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)(转)
		Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现) 相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦 ... 
- silverlight漂亮的文件上传进度显示原理及示例
		silverlight漂亮的文件上传进度显示原理及示例 作者:chenxumi 出处:博客园 2009/11/27 13:37:11 阅读 1219 次 概述:在网站根目录web.config里配 ... 
- 用JAVA实现大文件上传及显示进度信息
		一. 大文件上传基础描述: 各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容. 比如: Spring 框 ... 
- Asp.Net 无刷新文件上传并显示进度条的实现方法及思路
		相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认”拿来主义“,只是我个人更喜欢凡是求个所以 ... 
- 体验三大JavaScript文件上传库(Uppy.js/Filepond/Dropzone)
		最近发现了一个高颜值的前端上传组件Uppy.js,立即上手体验了一波,感觉还不错.然后又看到同类型的Filepond以及Dropzone.js,对比体验了一下,感觉都很优秀,但是在体验过程中,都遇到了 ... 
- 文件上传下载显示进度(vue)
		编写了一个vue组件,可以实时显示文件上传和下载时候的进度 <template> <div v-show="circleProgress_wrapper_panel_sta ... 
- JQuery文件上传插件JQuery.upload.js的用法简介
		JQuery文件上传插件,这个插件很小,用法很简单,效果却很棒.注意:JQuery版本要求1.8及以上,大家执行如果没效果,则检查JQuery版本,如果是1.8及以上,则该插件源码中的.size()需 ... 
- 阿里云 oss 小文件上传进度显示
		对阿里云OSS上传小文件时的进度,想过两个方法:一是.通过多线程监測Inputstream剩余的字节数来计算,可是由于Inputstream在两个线程中共用,假设上传线程将Inputstream关闭, ... 
随机推荐
- 160726 smarty 笔记(2)
			<?php //取当前页 $p=1; if(!empty($_GET["page"])) { $p=$_GET["page"]; } //定义页面缓存文件 ... 
- spring boot 启动原理
			https://www.processon.com/view/link/59812124e4b0de2518b32b6e https://www.cnblogs.com/trgl/p/7353782. ... 
- 性能调优之MySQL篇二:MySQL配置文件My.ini配置文件优化
			[mysqld]port = 3306serverid = 1socket = /tmp/mysql.sock skip-name-resolve #禁止MySQL对外部连接进行DNS解析skip-g ... 
- 防止常见XSS 过滤 SQL注入 JAVA过滤器filter
			XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往W ... 
- TCP深入详解
			TCP三次握手.四次挥手时序图: #TCP协议状态机 1.TCP建立连接时的初始化序列号X.Y可以是写死固定的吗? 如果初始化序列号(缩写为ISN:Inital Sequence Numbe ... 
- Fiddler4工具配置及调试手机和PC端浏览器
			Fiddler最大的用处: 模拟请求.修改请求.手机应用调试 Fiddler最新版本 下载地址: http://www.telerik.com/download/fiddler Fiddler 想要监 ... 
- 4.9版本的linux内核中eeprom存储芯片at24c512的驱动源码在哪里
			答:drivers/misc/eeprom/at24.c,内核配置项为CONFIG_EEPROM_AT24 Location: -> Device Drivers -> Misc devi ... 
- jsp判断以某个字母开头
			<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ tag ... 
- 转:web.xml 中的listener、 filter、servlet 加载顺序及其详解
			在项目中总会遇到一些关于加载的优先级问题,刚刚就遇到了一个问题,由于项目中使用了quartz任务调度,quartz在web.xml中是使用listener进行监听的,使得在tomcat启动的时候能马上 ... 
- Xampp  mysql启动
			因为最近项目要用到php,需要集成Xampp环境,但是并没有接触过php,从官网下载了Xampp后,基本上就是傻瓜式安装了, 完成安装界面如下: 点击Apache的start可以正常启动,点击MYSQ ... 
