我可以将 Base64 图像添加到 $_FILES 数组中吗?

Mar*_*ouw 4 php database base64 image

有没有办法将 base64 图像字符串添加到数组$_FILES(上传文件时获得的数组)?基本上,我想从 Base64 字符串伪造文件上传。Base64 字符串来自电子邮件附件。我不想使用 \xe2\x80\x99t file_get_contents(),因为我想将图像作为二进制图像保存在数据库中。我不需要\xe2\x80\x99t 上传它,因此,但我确实需要它成为数组的一部分$_FILES

\n

jcs*_*nyi 5

上传是将文件内容从客户端(通常是网络浏览器)发送到服务器的一种方式。听起来您已经在服务器上获得了所需的数据(以 PHP 形式),因此无需上传。

  1. 您可以使用base64_decode()它将其从 base64 转换为直接文件内容。

  2. 如果您需要将其作为服务器上的文件,则可以使用类似file_put_contents()将其另存为新文件的方法。

  3. 如果您尝试对数组中上传的文件执行其他操作$_FILE,请提供更多详细信息。无论是什么,您都不需要实际上传文件。


$_FILES数组实际上并不包含文件的内容 - 它包含保存内容的文件名。

如果必须使用$_FILES数组(例如,为了重用现有的类),则需要使用它file_put_contents()来保存新的临时文件,然后手动向数组添加一个$_FILES指向该临时文件的条目(只需就像修改任何其他数组一样)。完成后不要忘记删除临时文件 - 这通常由 PHP 自动处理,但如果您手动创建文件,则也必须手动删除它。

不过,我强烈建议您重构或为您的类提供替代接口。您不必假装文件已上传只是为了将其保存到数据库中。