原生Js图片上传

上传图片一般用两种格式:

base64,byte前端

----------------------------------------------------------------------------------------数组

byte上传:服务器

  FileReader.readAsArrayBuffer//将file读取为ArrayBufferasync

base64上传post

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

----------------------------------------------------------------------------------------spa

                                      ====Byte上传===code

前端blog

  

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

相关文章
相关标签/搜索