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数组,然后创建为图片。

      

  • 相关阅读:
    hdu1875(最小生成树prime)
    hdu1839(最小生成树)
    poj2739(尺取法+质数筛)
    poj2100(尺取法)
    codeforces-div2-449-B
    gym-101350M
    gym-10135I
    gym-101350H
    gym-101350D
    hdu 5569
  • 原文地址:https://www.cnblogs.com/Thancoo/p/5956137.html
Copyright © 2011-2022 走看看