【发布时间】:2013-12-02 09:47:56
【问题描述】:
我有一个将 JPG 或 PNG 转换为 base64 字符串的 If 语句:
$data = file_get_contents($path);
//separator is fine
$base64_image = 'data:image'.DIRECTORY_SEPARATOR.'jpeg;base64,' . base64_encode($data);
$output = [];
$output = $base64_image;
echo json_encode(array('response' => $od1));
return;
此代码输出类似
{"response":["data:image/jpeg;base64 ... ] }
这很好。
但我需要输出是单独的方法,因为我多次使用它:
public function returnOutput($message)
{
$output_upload = [];
$output_upload[] = $message;
echo json_encode(array('response' => $output_upload));
return;
}
...和调用:
$this->returnOutput($base64_image);
像这样混合斜线:
{"response":["data:image\/jpeg;base64 ... "]}
从其他方法使用 return 有问题吗?
编辑:
我想将响应直接发送到浏览器,是的。删除了 DIRECTORY_SEPARATOR
这是我改变的,现在很好:
public function returnOutput($message)
{
$output_upload = [];
$output_upload[] = $message;
return json_encode(array('response' => $output_upload));
}
还有呼唤:
...
echo $this->returnOutput($base64_image);
//I want to terminate the program after the response
return;
这样更好吗?所以我不能在任何地方都使用一种方法返回?
【问题讨论】:
-
不确定它是否能解决你的问题,但对我来说'return json_encode(array('response' => $output_upload));' 更有意义然后'回显 $this->returnOutput($base64_image);'
-
传给JS,所以应该回显
-
但是你的方法叫做“returnOutput”,但它没有返回任何东西。
-
回显你的方法调用
echo $this->returnOutput($base64_image);而不是 json。 -
确实,该方法没有返回任何内容。有那个回报没有做任何事情。我知道你想将它作为 JSON 回显到浏览器,这就是这样做的。正如我所说,这对我来说更有意义。如果您想使用相同的方法来获取输出并将其存储在一个变量中(缓存或其他东西)而不是发送海峡到浏览器,那么您不能这样做。不过并不是特别重要。