2011-12-12 40 views
2

我基本上正在嘗試使用Google的QR Code API從字節數組創建QR碼。我試着將'chl'變量(QR碼的數據)傳遞給Google的web後端一個字節數組,但它似乎從不喜歡它。我已經使用Google的PHP示例作爲我的代碼的基礎,但如果有人知道使用Google的API將字節數組簡單地轉換爲QR碼的替代方法,那麼這是唯一的目標。小文件到QR碼

<?php 
// Create some random text-encoded data for a QR code. 
//header('content-type: image/png');  
$url = 'https://chart.googleapis.com/chart?chid=' . md5(uniqid(rand(), true)); 
$chd = file($_FILES["file"]["tmp_name"]); 

// Add image type, image size, and data to params. 
$qrcode = array(
'cht' => 'qr', 
'chs' => '300x300', 
'choe' => 'ISO-8859-1', 
'chl' => $chd); 


// Send the request, and print out the returned bytes. 
$context = stream_context_create(
array('http' => array(
    'method' => 'POST', 
    'content' => http_build_query($qrcode)))); 
fpassthru(fopen($url, 'r', false, $context)); 
?> 

有PHP,處理上傳的文件並通過字節數組發送到谷歌的API。

+1

請向我們展示您嘗試過的代碼。 – richsage

+0

您可以嘗試將數據轉換爲十六進制。 – Blender

+0

添加了一些PHP嘗試從上傳的文件發送字節數組。 – VashGH

回答

1

file()函數給出一個字符串數組,分割成新行。我想你只是想要一個字符串。見file_get_contents()

確保

echo http_build_query($qrcode); 

幫你調試。

+0

'echo http_build_query($ qrcode);'This works,and the query looks like it works just just。它將文件完全按照字節數組的形式發送,查詢看起來不錯。我現在的問題是,它返回原始文本中的PNG,但不更改標題。當我取消註釋標題行以使其成爲PNG時,它不會正確發送請求。 – VashGH

+0

是什麼讓你覺得它沒有正確發送請求? – goat

+0

假設迴應請求應該被API接受併產生有效的條形碼,當標題改變時,API吐出通用的1級條形碼,其中不存儲數據。 – VashGH

0

您無法使用Google圖表服務器對字節數組進行編碼 - 它使用字符串進行操作。我認爲這些都是勇於嘗試黑客攻擊的,但最終會因爲你找到的原因而無法工作。

您應該只在本地使用zxing項目中的編碼器。它也可以對字符串進行操作,但實際上,您可以輕鬆地更改或注入一個直接以此方式指定字節數組的調用。