3

这是参考这个问题 -需要与 $_FILES 相同的东西,从远程服务器下载使用 php

在上面的帖子中,OP 基本上想要的是手动填充$_FILES超全局数组以进行文件上传。

在答案中,您将看到使用tempnam创建临时文件并将资源存储在其中的使用file_get_contents,我认为这在理论上应该有效(未经测试)。

现在,我的问题是 PHP 没有任何检查来检测和防止这种行为,或者post-max-size/upload-max-filesize ini值如何影响这个手动创建的$_FILES数组?

4

4 回答 4

4

和不会对您链接到的问题中的场景产生任何影响,因为它们正在与远程源建立post_max_size传出连接以获取数据。这两个 ini 设置只会影响发送到脚本的数据(即传入)。upload_max_filesizePOST

PHP 不对$_FILES数组的更改做任何检查,您可以无限制地自由修改数组。

于 2012-12-17T14:16:47.743 回答
1

$_FILES 只是一个由网络服务器创建的简单数组。你可以用这个数组做任何你喜欢的事情。tempnam 创建一个文件,该文件在您的控制之下。这就是为什么“post-max-size”和“upload-max-filesize”在这种情况下并不重要。如果你用自己的代码杀死服务器空间,那就是你的问题。post-max-size 确保没有其他人可以创建巨大的网络流量。

于 2012-12-17T14:19:17.620 回答
0

对于单个文件,就是这样:

$path = '/path/to/my/image.jpg'

$file = [
    'name' => 'image.jpg',
    'type' => 'image/jpeg',
    'tmp_name' => $path,
    'error' => 0,
    'size' => filesize($path),
];
于 2019-04-02T14:20:10.143 回答
-4

您不能预先填充 $_FILES 数组,也不能将信息放入 HTML 中 type=file 控件的名称中。这是一个安全问题。想一想……如果我可以在我想上传的文件名中加入信息,我可以在你不知情或不许可的情况下从你的计算机上删除数据。所要做的就是让您的浏览器访问我的网站并“噗!”

于 2012-12-17T14:14:27.293 回答