使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe)

2023-05-16

使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe)


原理:

1.使用FileReader 读取图片的base64编码

2.使用ajax,把图片的base64编码post到服务器。

3.根据接收到post的数据分析图片的类型(jpg,gif,png),并把base64_decode后的数据生成对应类型的图片文件。


html:

<!DOCTYPE HTML PUBLIC>
<html>
 <head>
  <meta charset="utf-8">
  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <title>使用html5 FileReader获取图片,并异步上传到服务器(not iframe)</title>

  <style type="text/css">
    body{margin: 0px; background:#f2f2f0;}
    p{margin:0px;}
    .title{color:#FFFF00; background:#000000; text-align:center; font-size:24px; line-height:50px; font-weight:bold;}
    .file{position:absolute; width:100%; font-size:90px;}
    .filebtn{display:block; position:relative; height:110px; color:#FFFFFF; background:#06980e; font-size:48px; line-height:110px; text-align:center; cursor:pointer; border: 3px solid #cccccc;}
    .filebtn:hover{background:#04bc0d;}
    .showimg{margin:10px auto 10px auto; text-align:center;}
  </style>

  <script type="text/javascript">
  window.onload = function(){

    // 选择图片
    document.getElementById('img').onchange = function(){

        var img = event.target.files[0];

        // 判断是否图片
        if(!img){
            return ;
        }

        // 判断图片格式
        if(!(img.type.indexOf('image')==0 && img.type && /\.(?:jpg|png|gif)$/.test(img.name)) ){
            alert('图片只能是jpg,gif,png');
            return ;
        }

        var reader = new FileReader();
        reader.readAsDataURL(img);

        reader.onload = function(e){ // reader onload start
            // ajax 上传图片
            $.post("server.php", { img: e.target.result},function(ret){
                if(ret.img!=''){
                    alert('upload success');
                    $('#showimg').html('<img src="' + ret.img + '">');
                }else{
                    alert('upload fail');
                }
            },'json');
        } // reader onload end
    }

  }
  </script>

 </head>

 <body>
  <p class="title">使用html5 FileReader获取图片,并异步上传到服务器(not iframe)</p>
  <p><input type="file" class="file" id="img"><label class="filebtn" for="img" title="JPG,GIF,PNG">请选择图片</label></p>
  <p class="showimg" id="showimg"></p>
 </body>  
</html>

server.php

<?php
$img = isset($_POST['img'])? $_POST['img'] : '';

// 获取图片
list($type, $data) = explode(',', $img);

// 判断类型
if(strstr($type,'image/jpeg')!=''){
    $ext = '.jpg';
}elseif(strstr($type,'image/gif')!=''){
    $ext = '.gif';
}elseif(strstr($type,'image/png')!=''){
    $ext = '.png';
}

// 生成的文件名
$photo = time().$ext;

// 生成文件
file_put_contents($photo, base64_decode($data), true);

// 返回
header('content-type:application/json;charset=utf-8');
$ret = array('img'=>$photo);
echo json_encode($ret);
?>


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe) 的相关文章

  • php 异步调用方法

    php 异步调用方法 客户端与服务器端是通过HTTP协议进行连接通讯 xff0c 客户端发起请求 xff0c 服务器端接收到请求后执行处理 xff0c 并返回处理结果 有时服务器需要执行很耗时的操作 xff0c 这个操作的结果并不需要返回给
  • php 根据url自动生成缩略图,并处理高并发问题

    服务器生成缩略图的时机一般分为两种 xff1a 1 上传文件时生成 优点 xff1a 上传时就已经生成需要的缩略图 xff0c 读取时不需要再判断 xff0c 减少cpu运算 缺点 xff1a 当缩略图尺寸变化时或新增尺寸时 xff0c 需
  • MemcacheQ 安装与使用

    MemcacheQ 是一个基于 MemcacheDB 的消息队列服务器 官网地址 xff1a http memcachedb org memcacheq 特点 xff1a 1 简单易用 2 处理速度快 3 可创建多条队列 4 并发性能高 5
  • 深入Mysql字符集设置

    基本概念 字符 Character 是指人类语言中最小的表义符号 例如 A 39 B 39 等 xff1b 给定一系列字符 xff0c 对每个字符赋予一个数值 xff0c 用数值来代表对应的字符 xff0c 这一数值就是字符的编码 Enco
  • Rsync 安装与使用

    Rsync 是一个远程数据同步工具 xff0c 可以通过 LAN WAN 快速同步多台主机间的文件 Rsync 使用 34 Rsync演算法 34 来使本地和远程两个主机之间的文件同步 这个算法只传送两个文件的不同部分 xff0c 而不是每
  • php 字符串压缩方法比较

    php 提供的字符串压缩方法有 1 gzcompress Compress a string This function compress the given string using the ZLIB data format 2 gzen
  • php 生成短网址

    php 生成短网址 原理 xff1a 1 将原网址做crc32校验 xff0c 得到校验码 2 使用sprintf 39 u 39 将校验码转为无符号数字 3 对无符号数字进行求余62操作 xff08 大小写字母 43 数字等于62位 xf
  • debian7安装和配置小经验

    好久没碰linux了 xff0c 这回 捡 了台电脑测试玩 xff0c 发现过去的基本都忘记了 xff0c 拳不离手 曲不离口 xff0c 古人诚吾不欺 linux版本选择我比较熟悉debian xff0c 因为debian装包好方便 xf
  • ApacheBench 测试性能并使用GnuPlot绘制图表

    Apache Bench 是web性能测试工具 xff0c 功能强大 但输出的结果只是数字形式 xff0c 不容易看到数据的变化 因此 xff0c GnuPlot 的强大绘制功能正好可以弥补Apache Bench这方面的不足 关于Apac
  • VM ubuntu ping unknow host 解决方法

    例如网关地址为 xff1a 192 168 1 1 route add default gw 192 168 1 1 sudo vim etc resolv conf 在 etc resolv conf 中加入 Generated by N
  • apache日志分析及系统cpu,内存,负载情况监控

    1 根据Apache Log xff0c 获取当天秒并发数最多的记录 tail 10000 demo fdipzone com access log 2014 01 16 01 cut d 34 34 f 2 awk 39 print 1
  • Apache 搭建HTTPS Virtual Host

    Apache 搭建HTTPS Virtual Host 1 创建SSL证书 首先需要安装openssl xff0c linux系统默认已安装 xff0c 如没有则用以下命令安装 xff1a sudo apt get install open
  • MongoDB 主从同步设置

    MongoDB 主从同步设置 关于MongoDB的安装及启动参数说明可以参考我之前转载的 Ubuntu安装MongoDB 与 Mongodb启动命令mongod参数说明 主从设置 Master xff1a 192 168 111 103 P
  • php Timer 页面运行时间监测类

    php Timer 页面运行时间监测类 xff0c 可按不同key监测不同的运行时间 Timer class php lt php Timer class 计算页面运行时间 可按不同key计算不同的运行时间 Date 2014 02 28
  • C 使用异或(xor)加密/解密文件

    C 使用异或 XOR 加密 解密文件 之前写过一篇 php 使用异或 xff08 XOR xff09 加密 解密文件 xff0c 但php执行的速度很慢 xff0c 因此这次使用C重写 xff0c 速度有很大的提高 xor encrypt
  • 使用C创建php扩展

    使用C创建php扩展 优点 xff1a 1 提高运行效率 2 降低php复杂度 xff0c 可以直接调用扩展方法实现功能 3 方便与第三方库交互 缺点 xff1a 1 开发比php复杂 2 可维护性降低 3 开发周期变长 php开发 xff
  • linux 系统监控命令

    linux系统监控有以下命令 xff1a uptime xff1a 显示系统负载情况 mpstat xff1a 显示 CPU 性能 free xff1a 显示内存使用情况 vmstat xff1a 显示虚拟内存使用情况 iostat xff
  • php 构造函数支持不同个数参数的方法

    php 构造函数支持不同个数参数方法 原理 xff1a 在 construct中使用 func num args 获取参数个数 xff0c 再根据参数个数执行不同的调用 参数值使用func get arg 方法获得 demo xff1a l
  • A+B for Polynomials(c++)

    题目描述 xff1a This time you are supposed to find A 43 B where A and B are two polynomials 输入描述 xff1a Each input file contai
  • php soap 使用实例

    SOAP 是基于XML和HTTP通讯协议 xff0c XML各个平台 xff0c 各种语言都支持的一种语言 WSDL 是网络服务描述语言 xff08 Web Services Description Language xff09 xff0c

随机推荐

  • 使用PDO查询mysql避免SQL注入

    使用传统的 mysql connect mysql query方法来连接查询数据库时 xff0c 如果过滤不严紧 xff0c 就有SQL注入风险 虽然可以用mysql real escape string 函数过滤用户提交的值 xff0c
  • linux crontab 实现每秒执行

    linux crontab 命令 xff0c 最小的执行时间是一分钟 如需要在小于一分钟内重复执行 xff0c 可以有两个方法实现 1 使用延时来实现每N秒执行 创建一个php做执行动作 xff0c 非常简单 xff0c 就是把当前时间写入
  • ssh远程执行命令并自动退出

    ssh命令格式如下 xff1a usage ssh 1246AaCfgKkMNnqsTtVvXxYy b bind address c cipher spec D bind address port e escape char F conf
  • shell 监控cpu,memory,load average

    shell 监控cpu xff0c memory xff0c load average xff0c 记录到log xff0c 当负载压力时 xff0c 发电邮通知管理员 原理 xff1a 1 获取cpu xff0c memory xff0c
  • shell date 命令说明

    shell date 命令说明 用法 xff1a date 选项 43 格式 或 xff1a date u utc universal MMDDhhmm CC YY ss 以给定的格式显示当前时间 xff0c 或是设置系统日期 d date
  • shell 生成指定范围随机数与随机字符串

    shell 生成指定范围随机数与随机字符串 1 使用系统的 RANDOM 变量 fdipzone 64 ubuntu echo RANDOM 17617 RANDOM 的范围是 0 32767 如需要生成超过32767的随机数 xff0c
  • php 双向队列类

    xff08 deque xff0c 全名double ended queue xff09 是一种具有队列和栈的性质的数据结构 双向队列中的元素可以从两端弹出 xff0c 其限定插入和删除操作在表的两端进行 在实际使用中 xff0c 还可以有
  • php heredoc 与 nowdoc

    php heredoc 与 nowdoc heredoc 结构 heredoc 句法结构 xff1a lt lt lt 在该运算符之后要提供一个标识符 xff0c 然后换行 接下来是字符串本身 xff0c 最后要用前面定义的标识符作为结束标
  • HTML5 localStorage and sessionStorage

    HTML5 提供两种web存储方法 xff0c localStorage 与 sessionStorage localStorage 与 sessionStorage 区别 localStorage没有过期时间 xff0c 只要不clear
  • AZ_自定义不等高的cell

    自定义不等高的cell 1 给模型增加frame数据 纯代码 让ViewController继承UITableViewController xff0c 移除storyboard中的ViewController xff0c 新建一个UITab
  • php 导出CSV抽象类

    php 导出CSV抽象类 xff0c 根据总记录数与每批次记录数 xff0c 计算总批次 xff0c 循环导出 避免内存不足的问题 ExportCSV class php lt php php Export CSV abstract cla
  • php zip文件内容比较类

    php zip 文件比较类 xff0c 比较两个zip文件的内容 xff0c 返回新增 xff0c 删除 xff0c 及相同的文件列表 暂时只支持单层 需求 xff1a 上传一个zip文件 xff0c zip内有很多图片文件 需要对图片文件
  • php 获取/设置用户访问页面语言类

    User Language Class 获取 设置用户访问的页面语言 xff0c 如果用户没有设置访问语言 xff0c 则读取Accept Language 根据用户选择的语言显示对应的页面 xff08 英文 xff0c 简体中文 xff0
  • php session 读写锁

    php session 读写锁 先看一个例子 xff0c 功能 xff1a 1 点击页面中一个按钮 xff0c ajax执行php xff0c php中用session记录执行到哪一步 2 使用ajax轮询另一个php xff0c 获取se
  • linux 打开文件数 too many open files 解决方法

    linux 打开文件数 too many open files 解决方法 too many open files 出现这句提示的原因是程序打开的文件 socket连接数量超过系统设定值 查看每个用户最大允许打开文件数量 ulimit a f
  • php 求水仙花数优化

    水仙花数是指一个n位数 n gt 61 3 xff0c 它每个位上数字的n次幂之和等于它本身 xff0c n为它的位数 xff08 例如 xff1a 1 3 43 5 3 43 3 3 61 153 水仙花数又称阿姆斯特朗数 三位的水仙花数
  • php 验证身份证号码

    身份证号码的结构 身份证号码是特征组合码 xff0c 由17位数字本体码和一位校验码组成 排列顺序从左至右依此为 xff1a 六位数字地址码 xff0c 八位数字出生日期码 xff0c 三位数字顺序码和一位数字校验码 地址码 xff08 前
  • php 删除空目录及空子目录

    php 删除空目录及空子目录 步骤 xff1a 1 遍历目录及子目录 2 使用 scandir 判断目录是否为空 xff0c 为空则使用rmdir 删除 lt php 删除所有空目录 64 param String path 目录路径 fu
  • linux 分卷压缩命令

    linux 分卷压缩命令 1 使用tar分卷压缩 格式 tar cvzf filedir split d b 50m filename 例子 xff1a tar cvzf picture split d b 10m picture 将 pi
  • 使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe)

    使用html5 FileReader获取图片 xff0c 并异步上传到服务器 不使用iframe 原理 xff1a 1 使用FileReader 读取图片的base64编码 2 使用ajax xff0c 把图片的base64编码post到服