文件上传及时显示, 前端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关闭, ...
随机推荐
- 002-启动spring boot应用
一.idea启动. 1.在src目录里面找到启动类(包含主函数的类)DemoApplication,然后在该类里面右键,选择run DemoApplication.main,即spring boot应 ...
- MVC[xml]页面传值
MVC 各种传值方式 ViewData传值.HomeController.cs Co de: public ActionResult Index(){ ViewData["Titl ...
- 【转载】IDEA:放置型塔防备忘录
下周开始做原型了,我需要再次细细的整理一遍设计思路,确保每一个设计都能为了我所追求的玩家体验添砖加瓦,而不是互相打架.同时本文还能提供最原始的VISION,待到将来开发万一陷入泥淖,翻出此文来可以起到 ...
- Docker+.Net Core 的那些事儿-3.创建容器并运行
1.根据镜像运行容器 上篇文章建立了一个镜像: 我们以此开始,执行以下命令: docker run -d -p 5000:5000 hwapp:latest 如果返回以上结果表示建立成功. 此时如果你 ...
- C++之操作Excel(抄录https://www.cnblogs.com/For-her/p/3499782.html)
MFC操作Excel 下面的操作基于Excel2003 一.初始化操作 1.导入类库 点击查看->建立类向导-> Add Class...\From a type Library...-& ...
- union遇上ntext数据类型
http://www.myhack58.com/Article/html/3/7/2011/31392.htm
- @Override笔记
作用:用来保证正确重写方法,当你重写方法出错时,比如方法名误写,或者漏掉参数,编译器会提示编译错误. 使用场景:继承父类,重写父类方法:实现接口,实现接口方法. 备注:jdk1.5之允许在继承时使用, ...
- 20145328 《Java程序设计》实验四实验报告
20145328 <Java程序设计>实验四实验报告 实验名称 Andoid开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android ...
- 20144303 《Java程序设计》第七周学习总结
20144303 <Java程序设计>第七周学习总结 教材学习内容总结 第十二章 Lambda Lambda表达式中this的参考对象以及toString()的接受者,是来自Lambda的 ...
- [BZOJ2733]永无乡
Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以 ...