• tomcat 下 base64图片上传超过2m的解决方案


    方案一:

    tomcat部署下默认post请求提交参数大小为2M左右,超过这个大小,就会传值不成功

    要使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" />

    其中参数maxPostSize="-1"是限制post请求参数的大小,tomcat7.0.63之前的版本设置为0和负数均可以代表不限制。但是7.0.63之后的版本只有设置为负数才代表不限制数据大小

    方案二:

    先用 js 判断 base64 大小,大于2m转为文件再上传。

    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:

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

    // 上传图片

        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});
        }

  • 相关阅读:
    网络编程基础
    windows下配置chromedriver
    Selenium和PhantomJS
    爬虫之正则表达式re模块
    Fiddler抓包工具总结
    使用jquery刷新当前页面
    关于requests.exceptions.ConnectionError: HTTPSConnectionPool的问题
    python的urllib学习
    安卓---Tabhost实现页面局部刷新--父页子页之间的传值
    安卓---右滑返回
  • 原文地址:https://www.cnblogs.com/interdrp/p/11724025.html
Copyright © 2020-2023  润新知