【问题标题】:How to save Data Url like save $_FILES in php如何在 php 中保存数据 URL,如保存 $_FILES
【发布时间】:2017-11-17 09:57:41
【问题描述】:

如何在php中保存DATA URL,如保存$_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);

【问题讨论】:

  • 我在您给定的代码中看不到任何move_uploaded_file()
  • @AlivetoDie 你可以再看看
  • @AlivetoDie move_uploaded_file是原生PHP函数,只是这里用错了

标签: php todataurl


【解决方案1】:

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

重要的部分是(从描述中引用):

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

你创建的文件不是通过 PHP HTTP POST 上传机制上传的,它是你自己创建的临时文件,所以你不能用这个函数移动它。

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

【讨论】:

  • 如何将 base64 上传到我的服务器?
  • @RobbyAlamsyahRamadhan 请尝试我的回答。如果我的不起作用,您也可以参考链接。让我知道问题是否解决?
猜你喜欢
  • 2017-01-29
  • 1970-01-01
  • 2023-03-29
  • 2015-10-26
  • 2019-06-23
  • 2021-04-13
  • 1970-01-01
  • 2019-02-09
  • 2019-12-17
相关资源
最近更新 更多