我在做我自己的共享主机,我有一些问题。
首先,如果我直接上传到upload.php文件,它的工作没有问题。但是,我想要另一个php文件,它处理并传递请求,因为我希望有多个域(它基本上会获得php url并根据所使用的api键重定向)。
我尝试的第一件事就是用PHP中的header()函数做一个简单的重定向,当我这样做时,文件无法传输。我做了一些调查,并尝试将$_FILES放入$_SESSION变量中的变量中,这也不起作用(但是,我可以使用此方法在upload.php中获取文件名)。
我不确定我还能做些什么,我将在下面提供一些代码片段。
“主”php
<?php
session_start();
$_SESSION["file"] = $_FILES;
if(($_GET["apikey"] === "apiKey")) {
header("Location: https://domain/upload.php?apikey=apiKey");
}
?>upload.php
<?php
session_start();
$sharexdir = '';
$domain_url = 'https://domain/';
if(!($_GET["apikey"] === "apiKey")){
header("Location: https://differentDomain/");
exit;
}
$_file = $_SESSION["file"];
$target_file = $_file["sharex"]["name"];
$fileType = pathinfo($target_file);
if (move_uploaded_file($_file["sharex"]["tmp_name"], $sharexdir/.$target_file))
{
echo ''.$domain_url.$sharexdir.substr($target_file, 0, strrpos($target_file, "."));
}
else
{
echo 'File upload failed - CHMOD/Folder doesn\'t exist?';
}
?>我很感谢你的帮助,谢谢!
注意:如果直接使用upload.php,我必须将$_SESSION["file"]更改为$_FILES
发布于 2020-09-16 04:18:18
"$_FILES“是一个全局php数组,它通过客户端保存上传文件的详细信息,然后保存到php应用程序的tmp文件夹中。
首先,您将文件详细信息放入某个会话索引中,并将客户端重定向到另一个页面。这只会导致您的文件详细信息发送到第二个文件,而您真正上传的文件保存在php的"tmp“文件夹中,在完成第一个处理后删除(您的main.php文件)。
实际上,php用于处理上传文件的解决方案如下
如果您使用"print_r“或"var_dump”或"$_FILES“的任何其他导出函数,则可以看到每个文件都有一个"tmp_name”索引,该索引显示客户端上载文件的真实路径。
php应用程序上传客户端将tmp文件夹中的文件上载到您使用move_uploaded_file函数。如果在完成处理后使用或不使用,php将删除客户端在此目录中上载的所有文件。
在您的代码中,“finishing process”语句位于"main.php“文件的末尾。不在"upload.php“中
实际上,客户端将文件上传到此文件(main.php),运行此文件后,php应用程序认为您的过程已经完成。
这并不意味着您的流程没有完成,而是将客户端转发到另一个文件中。在运行main.php之后,您的上传过程已经完成
所以在这个描述之后:没有办法。您应该直接使用upload.php,或者在main.php中上传文件,在upload.php中使用本地临时文件。无法为另一个文件使用$_FILES变量。
https://stackoverflow.com/questions/63908674
复制相似问题