2011-12-12 44 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项目中的编码器。它也可以对字符串进行操作,但实际上,您可以轻松地更改或注入一个直接以此方式指定字节数组的调用。