PHP 接收一个文件并将其放在一个文件夹中



我正在开发一个在线照片数据库(使用php和mysql),我有一个下载功能和一个上传功能。下载功能就像一个魅力,从服务器下载文件也不难。

我只是想知道是否可以(在 php 中)接收文件,但不能使用您选择文件的通常 html 表单。

例如如果我想上传文件"Photo.png",软件会将图像转换为base64字符串,然后将其发送到php脚本save.php?base=[BASE64]&&filename=[FILENAME]

如何使脚本将该字符串重新转换为照片.png然后将其保存到文件夹/img/中?

提前谢谢你, 凯斯帕。

它会像

$data = base64_decode($_GET['base']);
file_put_contents($_GET['filename'], $data)

在检查这些键是否存在并且它们不为空之前,您也不需要在 URL 中进行双重&

一些信息可以帮助您:

  1. 是的,您确实可以以任何形式接收数据并随心所欲地使用它。 在您的示例中,您可以发送以查询字符串编码的照片 base64,并使用base64_decode($_REQUEST['base'])base64_decode($_GET['base'])来获取它。

警告:过去,许多 Web 服务器对其将要处理的查询字符串的大小进行了限制 - 不过现在不确定它是否是一个问题。 检查您将使用的 Web 服务器以确认它没问题。 您可能需要考虑通过 POST 发送文件,在这种情况下,您甚至不一定需要在 base64 中对其进行编码。

  1. 我注意到您将文件名作为查询字符串的一部分发送。 如果您使用它,请先非常小心地对其进行消毒。 检查以确保它没有正斜杠或其他特殊字符,以便有人无法任意将二进制文件保存在服务器上的任何位置。 许多PHP框架可以开箱即用地为您处理此问题,或者查看此框架以获取您可以使用的更多直接PHP过滤选项: 文件名的字符串清理器

最新更新