PHP傳輸base64數(shù)據(jù)不完整的解決方法
前言
最近在做OCR增值稅務(wù)處理時(shí),接口是通過(guò)圖片轉(zhuǎn)base64提交處理然后返回?cái)?shù)據(jù)的,我通過(guò)前端將圖片轉(zhuǎn)換為base64提交到后端接收時(shí),通過(guò)在線工具進(jìn)行測(cè)試,發(fā)現(xiàn)傳遞過(guò)去的數(shù)據(jù)可以使用,接收到的數(shù)據(jù)卻提示損壞
解決辦法
將
<?php header('Content-Type: text/html; charset=utf-8'); header('Access-Control-Allow-Origin: *'); // 允許任何網(wǎng)址請(qǐng)求 header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE'); // 允許請(qǐng)求的類型 header('Access-Control-Allow-Credentials: true'); // 設(shè)置是否允許發(fā)送 cookies header('Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding, X-Requested-with, Origin'); // 設(shè)置允許自定義請(qǐng)求頭的字段 // 接收POST數(shù)據(jù) $base64=$_POST['base'];
替換為以下代碼:
<?php header('Content-Type: text/html; charset=utf-8'); header('Access-Control-Allow-Origin: *'); // 允許任何網(wǎng)址請(qǐng)求 header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE'); // 允許請(qǐng)求的類型 header('Access-Control-Allow-Credentials: true'); // 設(shè)置是否允許發(fā)送 cookies header('Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding, X-Requested-with, Origin'); // 設(shè)置允許自定義請(qǐng)求頭的字段 // 接收POST數(shù)據(jù) $postData = file_get_contents('php://input'); $base64=urldecode($postData); $new_base64 = substr($base64, 27);
即可解決
拓展知識(shí)
BASE64解碼后的圖片顯示不完整問(wèn)題
BASE64解碼后的圖片顯示不完整
從前端獲取base64信息就后用以下代碼進(jìn)行處理,發(fā)現(xiàn)解析出來(lái)的圖片會(huì)損壞。
StringBuffer filePathStr=new StringBuffer(); for(int i=0;i<fileList.size();i++){ JSONObject fileObj = fileList.getJSONObject(i); if(null!=fileObj){ String fileContent=fileObj.getString("FileContent"); String fileName=fileObj.getString("FileName"); //Base64解碼 byte[] bytes=Base64.decodeBase64(fileContent); for (int j = 0; j < bytes.length; ++j) { if (bytes[j] < 0) {// 調(diào)整異常數(shù)據(jù) bytes[j] += 256; } }
導(dǎo)致?lián)p壞可能為以下原因
一:需要去掉如下頭部信息。
二:
因?yàn)閍jax在傳輸過(guò)程中加號(hào)會(huì)變成空格而base64里是有加號(hào)的,所以在ajax傳輸前先要對(duì)base64進(jìn)行編碼,把加號(hào)替換成%2B的url編碼。
var img = imageData.replace(/+/g,"%2B");
imageData就是原始的base64碼
以上就是PHP傳輸base64數(shù)據(jù)不完整的解決方法的詳細(xì)內(nèi)容,更多關(guān)于PHP base64數(shù)據(jù)不完整的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
php動(dòng)態(tài)生成版權(quán)所有信息的方法
這篇文章主要介紹了php動(dòng)態(tài)生成版權(quán)所有信息的方法,實(shí)例分析了php時(shí)間與字符串的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03php簡(jiǎn)單實(shí)現(xiàn)無(wú)限分類樹(shù)形列表的方法
這篇文章主要介紹了php簡(jiǎn)單實(shí)現(xiàn)無(wú)限分類樹(shù)形列表的方法,實(shí)例分析了php通過(guò)數(shù)組實(shí)現(xiàn)樹(shù)形列表的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03淺談ThinkPHP中initialize和construct的區(qū)別
下面小編就為大家?guī)?lái)一篇淺談ThinkPHP中initialize和construct的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04