文件读取

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相互结合使用的更多相关文章

  1. 【原创】用JAVA实现大文件上传及显示进度信息

    用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/grayprince/UploadBigFil ...

  2. Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)(转)

    Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现) 相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦 ...

  3. silverlight漂亮的文件上传进度显示原理及示例

    silverlight漂亮的文件上传进度显示原理及示例 作者:chenxumi 出处:博客园  2009/11/27 13:37:11 阅读 1219  次 概述:在网站根目录web.config里配 ...

  4. 用JAVA实现大文件上传及显示进度信息

    一. 大文件上传基础描述: 各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容. 比如: Spring 框 ...

  5. Asp.Net 无刷新文件上传并显示进度条的实现方法及思路

    相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认”拿来主义“,只是我个人更喜欢凡是求个所以 ...

  6. 体验三大JavaScript文件上传库(Uppy.js/Filepond/Dropzone)

    最近发现了一个高颜值的前端上传组件Uppy.js,立即上手体验了一波,感觉还不错.然后又看到同类型的Filepond以及Dropzone.js,对比体验了一下,感觉都很优秀,但是在体验过程中,都遇到了 ...

  7. 文件上传下载显示进度(vue)

    编写了一个vue组件,可以实时显示文件上传和下载时候的进度 <template> <div v-show="circleProgress_wrapper_panel_sta ...

  8. JQuery文件上传插件JQuery.upload.js的用法简介

    JQuery文件上传插件,这个插件很小,用法很简单,效果却很棒.注意:JQuery版本要求1.8及以上,大家执行如果没效果,则检查JQuery版本,如果是1.8及以上,则该插件源码中的.size()需 ...

  9. 阿里云 oss 小文件上传进度显示

    对阿里云OSS上传小文件时的进度,想过两个方法:一是.通过多线程监測Inputstream剩余的字节数来计算,可是由于Inputstream在两个线程中共用,假设上传线程将Inputstream关闭, ...

随机推荐

  1. oracle 数据库误删数据,误删表的恢复

    1.某表的数据误删了,那么可以查询这个表某一时间节点之前的数据,并放到一个新建的表里. create table temptable as select * from t_billdefi  as O ...

  2. Mybatis中的#与$的区别

    一.对比场景 场景:数据库分表时,需要将分表的表序号传入的sql中. SpringBoot中使用注解如下: @Insert("insert into collect_#{tblNum}(id ...

  3. hdu4300 Clairewd’s message

    地址:http://acm.hdu.edu.cn/showproblem.php?pid=4300 题目: Clairewd’s message Time Limit: 2000/1000 MS (J ...

  4. 【转】C#操作xml

    XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...

  5. QT解决视频透视,有阴影的方法

    #define BG_DEVNAME "/dev/fb0"#define FG_DEVNAME "/dev/fb1" 课题5, QT界面与视频透明叠加问题:颜色 ...

  6. spring-boot单元测试

    一.为什么要写单元测试 很多程序员有两件事情不愿意做: 写注释. 写单元测试. 但是在看代码时又会希望有清晰明了的注释,重构代码时能有一套随时可以跑起来的单元测试. 最近在迁移一个项目,从sqlser ...

  7. 在父页面和其iframe之间函数回调 父页面回调iframe里写的函数

    // @shaoyang  父页面 window['mengBanLogin']={ mengBanArr : new Array(), mengBanLoginSuccess : function( ...

  8. SQL优化的若干原则

    SQL语句:是对数据库(数据)进行操作的惟一途径:消耗了70%~90%的数据库资源:独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低:可以有不同的写法:易 ...

  9. jdk官网历史版本下载&Oracle账号密码

    jdk官网下载地址: https://www.oracle.com/technetwork/java/javase/archive-139210.html 账号密码: 1772885836@qq.co ...

  10. Android -- 多线程下载, 断点下载

    1. 原理图 2. 示例代码 需要权限 <uses-permission android:name="android.permission.INTERNET"/> &l ...