我尝试使用以下代码通过file_put_contents(转换后的base64-string为.jpg)将某些内容上传到我的ubuntu服务器:
file_put_contents($filename, base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)));
是的,所有参数都是正确的,我仔细检查了它们。而且我想知道它为什么不起作用:
顺便说一下:我尝试将其上传到文件夹,比文件夹高一级,可以通过网址访问(但即使将其直接放在互联网文件夹中,它也无法正常工作)。
我考虑过糟糕的权限,但即使将权限更改为777(我知道这是非常不安全的),它也无效。
我也没有在控制台中出现任何错误。
有人知道为什么这不起作用吗?
感谢。
答案 0 :(得分:4)
关于您尝试保存的文件夹(/var/www/html
)的权限,您可以更改文件夹的组并更改权限,以便该组可以写为:
$ sudo chgrp www-data /var/www/html/
$ sudo chmod 775 /var/www/html
preg_replace('#^data:image/\w+;base64,#i', '', $data)
AFAIK模式必须包含开始和结束斜杠,我认为您已将/
与#
混淆,因此它看起来像
/^data:image/\w+;base64,/i
image 之后的斜线仍会在某些版本中给你一些问题,所以用反斜杠转义它
/^data:image\/\w+;base64,/i
我认为这样做:)