美文网首页
php操作二进制数据流

php操作二进制数据流

作者: 半打真心 | 来源:发表于2019-01-11 19:51 被阅读0次
神之爱因斯坦

    我们在做上传文件的时候大多数时候使用input:type=file加上后端文件操作就能满足大多数的项目需求。

    有时候需要多图上传或者预览的时候可能要多几步操作或者使用插件,但是有些时候你会遇到一些难以名状的困难。

    比如你在二次开发的时候遇到一个混乱的程序员写了一大堆混乱的代码用了一个非常笨重的插件,你想在这样的代码上再修改文件上传那就特别特别难受了。

    这时候你可以--直接传数据流

    1、前端

    前端首先排除FormData对象,这个反正不行,使用FileReader对象

    var fileObj = $('input[name="thumbImg"]')[0].files[0];

    var reader = new FileReader();

    var myData = new FormData();

    reader.readAsDataURL(fileObj);

    reader.onloadend = function(){

          myData.append('img',this.result);

    }

    reader.onerror=function(){

        alert('缩略图读取错误,请换种姿势重试一次!');

    }

    $.ajax({

        url:"ajax.php",

        type:"post",

        contentType: false,

        processData: false,

        cache: false,

        data:myData,

        success:function(r){

            var operation = {//操作对象集

                1:function(){

                    alert('保存成功');

                    location.reload();

                },

                2:function(){

                    alert("文件格式错误!");

                },

            };

            operation[r]();

        },

        error:function(){

            alert("网络错误!");

        }

    })

2、后端

    if (!file_exists('shipinimg')) {

        @mkdir('shipinimg');

    }

    $content = $_POST['img'];

    list($type, $data) = explode(',', $content);

    if (strstr($type, 'image/jpeg') != '') {

        $ext = '.jpg';

    } elseif (strstr($type, 'image/gif') != '') {

        $ext = '.gif';

    } elseif (strstr($type, 'image/png') != '') {

        $ext = '.png';

    }

    $imgname = 'shipinimg/' . time() . '_img' . $ext;

    $res = file_put_contents($imgname, base64_decode($data));

后端只需要file_put_contents()就可以了

相关文章

  • php操作二进制数据流

    我们在做上传文件的时候大多数时候使用input:type=file加上后端文件操作就能满足大多数的项目需求。 ...

  • Node中的缓冲区(Buffer)

    Buffer初识 在引入TypedArray 之前,JavaScript 语言没有用于读取或操作二进制数据流的机制...

  • Buffer 类型

    类型介绍 JavaScript 语言没有读取或操作二进制数据流的机制 Node.js 中引入了 Buffer 类型...

  • Buffer

    Buffer结构 背景  js语言没有读取或操作二进制数据流的机制,Buffer类被引入作为Nodejs API的...

  • node js(五)

    Buffer Buffer(缓冲区)介绍JavaScript 语言没有用于读取或操作二进制数据流的机制。 Buff...

  • node 核心模块学习之Buffer

    何为 Buffer 在ES6引入 TypeArray 之前,JS没有能读取和操作二进制数据流的机制,Buffer ...

  • node.js小记 net buffer stream

    buffer (缓冲):在es6引入TypedArray之前,js语言没有读取和操作二进制数据流的的机制。Buff...

  • 网络整理(一)——网络基础

    网络基础: 1.二进制数据流 重点:1.了解网络中传输的都是二进制数据流. 2.了解网络编程概念.{ } 网络基...

  • phpredis是如何链接redis服务器的

    几个文件 php_streams.h 定义了php数据流的结构与相关函数 php_streams.c 定义了php...

  • 微信上传素材、卡券logo接口报["errcode" => 41

    查阅微信文档中 出错有两个地点: 1、buffer要是文件的数据流,而不是文件的路径 2、PHP版本对curl操作...

网友评论

      本文标题:php操作二进制数据流

      本文链接:https://www.haomeiwen.com/subject/iozcrqtx.html