这是参考这个问题 - 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数组?
答案 0 :(得分:3)
post_max_size
和upload_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控件的名称中。这是一个安全问题。考虑一下......如果我可以将信息放入我想要上传的文件的名称,我可以在您不知情或未经许可的情况下从您的计算机上获取数据。所有必须发生的是您的浏览器访问我的网站和“噗!”