結合springmvc,使用ajax上傳base64圖片資料_上傳檔案

來源:互聯網
上載者:User

注(其他應用): 使用canvas畫布 進行html 中所需的dom元素,進行繪圖,使用 toDataUrl轉換成base64 編碼 上傳圖片


一、前端:

<input type="file" id="myImage" name="myImage"/>  
1 1
<script type="text/javascript">      $("#myImage").bind("change",function(){        uploadFile($(this));    });    //通過onChange直接擷取base64資料q   function uploadFile(file){        var f = file.files[0];        var reader = new FileReader();        reader.onload = function(){            var data = e.target.result;            if (data.lastIndexOf('data:base64') != -1) {                  data = data.replace('data:base64', 'data:image/jpeg;base64');            } else if (data.lastIndexOf('data:,') != -1) {                  data = data.replace('data:,', 'data:image/jpeg;base64,');            }            if(isCanvasSupported()){            }else{                alert("您的瀏覽器不支援");            }        };        reader.onerror = function(){            console.log("上傳失敗了 ");        }        reader.readAsDataURL(f);    }    //ajax非同步上傳    function ajaxUploadBase64File(base64Data){        var url = window.location.protocol + '//' + window.location.host + "/register/uploadBase64";        $.ajax({            url:url,            type:"post",            data:{base64Data:base64Data},            dataType:"json",            success:function(data){                if(data.success == true){                    console.log("上傳成功");                }else{                    console.log("上傳失敗");                }            },            error:function(){                console.log("上傳失敗");            }        });    };     //是否支援canvas    function isCanvasSupported(){        var elem = document.createElement('canvas');        return !!(elem.getContext && elem.getContext('2d'));    };</script>  
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

二、後台:

    @RequestMapping(value="/uploadBase64",method=RequestMethod.POST)    @ResponseBody    public ActionResult<Map<String,String>> base64UpLoad(@RequestParam String base64Data, HttpServletRequest request, HttpServletResponse response){          ActionResult<Map<String,String>> result = new ActionResult<Map<String,String>>();        try{              logger.debug("上傳檔案的資料:"+base64Data);            String dataPrix = "";            String data = "";            logger.debug("對資料進行判斷");            if(base64Data == null || "".equals(base64Data)){                throw new Exception("上傳失敗,上傳圖片資料為空白");            }else{                String [] d = base64Data.split("base64,");                if(d != null && d.length == 2){                    dataPrix = d[0];                    data = d[1];                }else{                    throw new Exception("上傳失敗,資料不合法");                }            }            logger.debug("對資料進行解析,擷取檔案名稱和流資料");            String suffix = "";            if("data:image/jpeg;".equalsIgnoreCase(dataPrix)){//data:image/jpeg;base64,base64編碼的jpeg圖片資料                suffix = ".jpg";            } else if("data:image/x-icon;".equalsIgnoreCase(dataPrix)){//data:image/x-icon;base64,base64編碼的icon圖片資料                suffix = ".ico";            } else if("data:image/gif;".equalsIgnoreCase(dataPrix)){//data:image/gif;base64,base64編碼的gif圖片資料                suffix = ".gif";            } else if("data:image/png;".equalsIgnoreCase(dataPrix)){//data:image/png;base64,base64編碼的png圖片資料                suffix = ".png";            }else{                throw new Exception("上傳圖片格式不合法");            }            String tempFileName = getRandomFileName() + suffix;            logger.debug("組建檔案名為:"+tempFileName);            //因為BASE64Decoder的jar問題,此處使用spring架構提供的工具包            byte[] bs = Base64Utils.decodeFromString(data);            try{                //使用apache提供的工具類操作流                FileUtils.writeByteArrayToFile(new File(Global.getConfig(UPLOAD_FILE_PAHT), tempFileName), bs);              }catch(Exception ee){                throw new Exception("上傳失敗,寫入檔案失敗,"+ee.getMessage());            }            Map<String,String> map =new HashMap<String,String>();               map.put("tempFileName", tempFileName);            result.setResultMessage("上傳成功");            result.setData(map);            logger.debug("上傳成功");        }catch (Exception e) {              logger.debug("上傳失敗,"+e.getMessage());            result.setSuccess(false);            result.setResultMessage("上傳失敗,"+e.getMessage());          }          return result;    }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58

參考: 
Base64編碼與圖片互轉、 
JAVA 把base64圖片資料轉為本地圖片、 
如何把圖片轉換成base64在後台轉換成圖片放在本地

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.