zoukankan      html  css  js  c++  java
  • 原生Js图片上传

    上传图片通常用两种格式:

    base64,byte

    ----------------------------------------------------------------------------------------

    byte上传:

      FileReader.readAsArrayBuffer//将file读取为ArrayBuffer

    base64上传

      FileReader.readAsDataUrl//将file读取为Url。

    ----------------------------------------------------------------------------------------

                                          ====Byte上传===

    前端

      

    <input type="file" onchange="wl(event)" filetype="image/*"/>

    Js

    function FW(event)
        var input = event.target;
        var reader = new FileReader();
        reader.onload = function(){
            var dataAF = reader.result;
            httpHelper({
                type:'post',
                async:'true',
                data:dataAF,
                success:function(){
                    //上传成功
                },
                error:function(){
                    //上传失败
                }
            });
        };
        reader.readAsDataBuffer(input.files[0]);
    };
    function httpHelper(params) {
        var request;
        if(XMLHttpRequest)
            request=new XMLHttpRequest();
        else
            request=new ActiveXObject("Microsoft.XMLHTTP");
        request.onreadystatechange = function () {
            if (request.readyState == 4) {
                if (request.status == 200) {
                    if (params.success)
                        params.success(request.responseText);
                }
                else if (parseInt(request.status / 100) == 4) {
                    if (params.error)
                        params.error(request.responseText);
                }
            }
        }
        request.open(params.type, params.url, params.async);
        try {
            request.send(params.data||null);
        } catch (e) {
            if (params.error)
                params.error(request.responseText);
        }
    }

    后台直接从request的stream读取,储存为图片就好了,图片格式可以放到请求头里。

    ----------------------------------------------------------------------

                              ======base64=======

    又时读取文件是图片,读取之后提供要浏览。这时需要把file读取为Url,把Url上传到服务器后需要对Url进行分解才能得到自己想要的图片base64数据。

    如果用get请求上传图片时,有些base64特殊字符会被转义(=,+,-),此时需要在服务端还原。然后把base64解码为byte数组,然后创建为图片。

      

  • 相关阅读:
    hdu
    《Linux命令行与shell脚本编程大全》 第十四章 学习笔记
    zoj 3665 Yukari's Birthday(枚举+二分)
    ActiveMQ使用STOMP协议的一个错误问题:Unexpected ACK received for message-id
    Ubuntu下屏幕录像、后期处理不完全攻略
    find-all-numbers-disappeared-in-an-array
    find-right-interval
    non-overlapping-intervals
    cut命令如何截取以空格隔开的字段
    arranging-coins
  • 原文地址:https://www.cnblogs.com/Thancoo/p/5956137.html
Copyright © 2011-2022 走看看