2013-02-28 137 views
1

我已經從java方法中將位圖編碼成Base64字符串。然後我把這個字符串作爲JSON發送到一個php webservice,它將這個插入到一個longBlob中。爲什麼php base64_decode返回null?

iVBORw0KGgoAAAANSUhEUgAAAtAAAAQOCAYAAADysw/5AAAABHNCSVQICAgIfAhkiAAAIABJREFU \ neJzs3c1WG1maLuBwr76A8A004szPkuxxrxJ4Xghzxg6cfcbgco0L48weW .....

但由於某些原因,當我做

$cust_sign = base64_decode($encodedString); 

`$cust_sign` is `null`. 

這是我使用的編碼:

 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     b.compress(Bitmap.CompressFormat.PNG,50,baos); 
     byte[] bytes=baos.toByteArray(); 
     String base64Image = Base64.encodeToString(bytes,Base64.DEFAULT); 

I als o在PHP腳本有這樣的:

if (base64_decode($cust_sign, true)) 
    { 
     echo "valid"; 
    } 

它沒有迴音有效

你任何想法,爲什麼?

謝謝

+0

您是用單引號還是雙引號包裝它? – DCoder 2013-02-28 19:09:38

+2

看來你的base64編碼的字符串有一些問題,我看到了換行符。 – datasage 2013-02-28 19:11:07

+1

發佈大量的編碼字符串並沒有多大幫助! – GordonM 2013-02-28 19:13:12

回答

2

由於某種原因,您的字符串包含換行符(\ n)。刪除它們,它應該工作。

編輯:嘗試將Base64.encodeToString()中的第二個參數從Base64.DEFAULT更改爲Base64.NO_WRAP。

+0

我會嘗試刪除\ n – mokko211 2013-02-28 19:23:17

+0

使用NO_WRAP時會發生什麼? – Alex 2013-03-01 15:19:12

+0

我設法使它工作。我在將它發送到Web服務之前刪除了\ n,並在服務器端設法解碼它。謝謝。 – mokko211 2013-03-01 16:13:13

0

「\」未包含在Base64中。看起來你的代碼中有換行符「\ n」。這不是你的解碼失敗,而是你如何編碼你的內容。使用您正在使用的流程更新您的問題,並且我將更多地編輯我的答案以更具體。

1

嘗試添加strict參數以檢查字符串是否包含base64字母外部的字符。如果函數返回FALSE,它可能是由一個符號表示您的base64字符串格式不正確

+0

我像你說的那樣添加了嚴格的參數,它是有效的。我用這個: if(base64_decode($ cust_sign,true)){ echo「valid」; } 它確實回聲有效 – mokko211 2013-02-28 19:40:42