我试图使用base64编码将图像(任何大小)发送到我创建的API。编码后的字符串会作为URL中的参数访问我的API。使用PHP构建的API。PHP base64编码的图像显示不正确
一旦请求命中我的API,我想将图像存储到我的服务器上,并将文件名保存在数据库中。这是工作,但我得到一些奇怪的输出与实际的形象。
我想我的存储服务器上的图像:
$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。
2014-01-27
Alias
+1
PHP正在截断您的变量。您可以更改配置以允许更长的长度。我会马上切换到POST。 –
+1
也注意到一些浏览器/服务器对网址长度也设置了最大限制 –
+2
...如果您不使用GET,则不必使用urldecode,这实际上只是代码可能中断的另一种方式 –