如何保存数据URL像在PHP中保存$ _FILES

时间:2017-06-15 04:19:17

标签: php todataurl

如何保存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);

1 个答案:

答案 0 :(得分:0)

在使用此功能之前,请阅读move_uploaded_file的PHP指南中的说明。

重要的部分是(来自描述的qoute):

  

此函数检查以确保filename指定的文件是   一个有效的上传文件(意味着它是通过PHP的HTTP POST上传的   上传机制)。如果文件有效,它将被移动到   目的地给出的文件名。

您创建的文件未通过PHP HTTP POST上传机制上传,它是您自己创建的临时文件,因此您无法使用此功能移动它。

如果数据作为Base64编码字符串到达​​,您只需将文件直接写入所需位置即可。 move_uploaded_file函数仅用于上传文件,而正文中发送的Base64字符串不是文件。