PHP - **手动**创建$ _FILES超全局数组

时间:2012-12-17 14:08:23

标签: php file-upload

这是参考这个问题 - need something that is same as $_FILES from remote server download with php

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

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

现在,我的问题是PHP是否有任何检查以检测和阻止此行为,或post-max-size / upload-max-filesize ini值如何影响此手动创建{{1数组?

4 个答案:

答案 0 :(得分:3)

post_max_sizeupload_max_filesize对您链接的问题中的方案没有任何影响,因为他们正在与远程来源建立传出连接数据。两个ini设置只会对发送到您脚本的POST数据产生影响(即传入)。

PHP不会对$_FILES数组的更改进行任何检查,您可以自由地修改数组。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

$file = [
    'name' => 'image.jpg',
    'type' => 'image/jpeg',
    'tmp_name' => $path,
    'error' => 0,
    'size' => filesize($path),
];

答案 3 :(得分:-3)

您无法预填充$ _FILES数组,也无法将信息放入HTML中的type = file控件的名称中。这是一个安全问题。考虑一下......如果我可以将信息放入我想要上传的文件的名称,我可以在您不知情或未经许可的情况下从您的计算机上获取数据。所有必须发生的是您的浏览器访问我的网站和“噗!”