如何保存DATA URL,如在PHP中保存$ _FILES?
我的代码是:
$dataurl = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAB...."
$image_content = base64_decode(str_replace("#^data:image/\w+;base64,#i","", $dataurl)); // remove "data:image/png;base64,"
$tempfile = tmpfile(); // create temporary file
$filesize = fwrite($tempfile, $image_content); // fill data to temporary file
$metaDatas = stream_get_meta_data($tempfile);
$tmpFilename = $metaDatas['uri'];
$file = array(
'name' => 'MyFile.jpg',
'type' => 'image/jpeg',
'tmp_name' => $tmpFilename,
'error' => 0,
'size' => $filesize,
);
move_uploaded_file($file['tmp_name'], $location);
问题可能在move_uploaded_file($file['tmp_name'], $location);
答案 0 :(得分:0)
在使用此功能之前,请阅读move_uploaded_file
的PHP指南中的说明。
重要的部分是(来自描述的qoute):
此函数检查以确保filename指定的文件是 一个有效的上传文件(意味着它是通过PHP的HTTP POST上传的 上传机制)。如果文件有效,它将被移动到 目的地给出的文件名。
您创建的文件未通过PHP HTTP POST上传机制上传,它是您自己创建的临时文件,因此您无法使用此功能移动它。
如果数据作为Base64编码字符串到达,您只需将文件直接写入所需位置即可。 move_uploaded_file
函数仅用于上传文件,而正文中发送的Base64字符串不是文件。