我試圖使用base64編碼將圖像(任何大小)發送到我創建的API。編碼後的字符串會作爲URL中的參數訪問我的API。使用PHP構建的API。PHP base64編碼的圖像顯示不正確
一旦請求命中我的API,我想將圖像存儲到我的服務器上,並將文件名保存在數據庫中。這是工作,但我得到一些奇怪的輸出與實際的形象。
僅供參考,我還遵循http://blog.justin.kelly.org.au/simple-base64-encodedecode-url-safe-functions/但具有相同的結果。
我想我的存儲服務器上的圖像:
$encode = base64_encode(file_get_contents($image));
echo $encode;
爲了進行測試,在此輸出中是我使用的是傳遞給我的API的字符串。
在API:
$image = base64_decode($_POST['image']));
$image_name = md5($image) . ".jpg";
file_put_contents(/public/image/ . $image_name, $image);
這工作,我的形象被放到服務器在正確的目錄與保存到數據庫中的隨機名字。
然而,直接導航到圖像時,圖像扭曲:
如果你有敏銳的眼光,在圖像的頂部部分實際上是正確的,它開始失效前,這讓我開始思考字符串是否沒有正確編碼以作爲參數發送?
任何線索都會很可愛,歡呼。
編輯:改變它POST,刪除urlencode /解碼&刪除strtr
。
PHP正在截斷您的變量。您可以更改配置以允許更長的長度。我會馬上切換到POST。 –
也注意到一些瀏覽器/服務器對網址長度也設置了最大限制 –
...如果您不使用GET,則不必使用urldecode,這實際上只是代碼可能中斷的另一種方式 –