tomcat 下 base64圖片上傳超過2m的解決方案

方案一:html

tomcat部署下默認post請求提交參數大小爲2M左右,超過這個大小,就會傳值不成功spring

要使post請求參數無大小限制,須要在server.xml上修改,以下:
<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="2000" 
redirectPort="8443" 
URIEncoding="UTF-8"
maxThreads="3000"
compression="on" compressableMimeType="text/html,text/xml" 
maxPostSize="-1"/>
<Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />json

其中參數maxPostSize="-1"是限制post請求參數的大小,tomcat7.0.63以前的版本設置爲0和負數都可以表明不限制。可是7.0.63以後的版本只有設置爲負數才表明不限制數據大小tomcat

 

方案二:app

先用 js 判斷 base64 大小,大於2m轉爲文件再上傳。post

getImgSize(str) {
    //獲取base64圖片大小,返回KB數字 var str = base64url.replace('data:image/jpeg;base64,', '');//這裏根據本身上傳圖片的格式進行相應修改 var strLength = str.length; var fileLength = parseInt(strLength - (strLength / 8) * 2); // 由字節轉換爲KB var size = ""; size = (fileLength / 1024).toFixed(2); return parseInt(size); },

 

base64:url

 data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZxxxxxxxkopKACiiigApaSloA/9k=spa

 

// 上傳圖片

    function upload(image) {
        var imgFile=dataURLtoFile(image,"img.png");
        var xhr=new XMLHttpRequest();
        var fd=new FormData();
        xhr.open('POST','/springStudy/user/multifiles');
        fd.append("multipartFile",imgFile);
        xhr.send(fd);
        console.log('上傳json!')
    }

    //將圖片Base64 轉成文件

    function dataURLtoFile(dataurl, filename) {
        console.log("轉文件")
        var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
            bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
        while(n--){
            u8arr[n] = bstr.charCodeAt(n);
        }
        return new File([u8arr], filename, {type:mime});
    }

debug

相關文章
相關標籤/搜索