PHP上传的文件存在于TMP名称中,但实际上它没有上传

PHP上传的文件存在于TMP名称中,但实际上它没有上传,php,apache,Php,Apache,我在PHP中上传了一个文件,它位于数组$u文件中,tmp_名称填充了他的名字,但事实上该文件尚未上传,为什么会发生这种情况?如果tmp_名称已填写,是否意味着该名称已上载?因为我甚至将文件夹设置为0777,仍然无法在phpinfo()中上载一切都好了,请帮帮我 foreach($_FILES as $file) { foreach($file['tmp_name']['new'] as $name) { echo '<br />'.$name.'<b

我在PHP中上传了一个文件,它位于数组$u文件中,tmp_名称填充了他的名字,但事实上该文件尚未上传,为什么会发生这种情况?如果tmp_名称已填写,是否意味着该名称已上载?因为我甚至将文件夹设置为0777,仍然无法在phpinfo()中上载一切都好了,请帮帮我

foreach($_FILES as $file)
{

    foreach($file['tmp_name']['new'] as $name) {

        echo '<br />'.$name.'<br />';
        if(is_uploaded_file($name))
        {
            echo '1';
        }
        else
        {
            echo '0'; // shows this
        }
        //$res = move_uploaded_file($name, "/uploads");
        //echo $res;
    }
    exit;
}
//exit;
您应该阅读以下内容:

这是:

看起来您不正确地访问了$\u文件

foreach($_FILES['tmp_name']['new'] as $inputName => $file)
{
    // $inputName is the name attribute from the HTML form
    echo '<br />'.$file.'<br />';
    if( is_uploaded_file($file) )
    {
        echo '1';
    }
    else
    {
        echo '0';
    }
    //$file = umiImageFile::upload('uploads',$name,'uploads','new');
    //$res = move_uploaded_file($name, "/uploads");
    //echo $res;
}
foreach($\u文件['tmp\u名称]['new']为$inputName=>$file)
{
//$inputName是HTML表单中的name属性
回显“
”。$file.“
”; 如果(是否上载了文件($file)) { 回声“1”; } 其他的 { 回音“0”; } //$file=umImageFile::upload('uploads',$name,'uploads','new'); //$res=移动上传的文件($name,“/uploads”); //echo$res; }
需要指出的一件重要事情是:如果在请求过程中没有保存上传的文件,PHP会在请求终止时将其删除,这样文件就会消失

其次,您在阵列上的循环不正确。您应该尝试使用for循环:

for ($i = 0; $i < sizeof($_FILES['new']['tmp_name']); ++$i) {
    $name = $_FILES['new']['name'][$i];
    $path = $_FILES['new']['tmp_name'][$i];
    $err  = $_FILES['new']['error'][$i];

    if ($err != UPLOAD_ERR_OK) {
        // check error code
        // report error
        continue;
    }

    if (is_uploaded_file($path)) {
        // do something with the file
    }
}

注意:如果您没有检查文件内容和扩展名,则上述操作是危险的。请注意不要允许使用.php或其他可执行扩展名上载文件。

向我们展示您尝试的代码。为什么您说它没有上载?你是否真的检查了上传文件夹,或者发生了其他事情,而你认为它没有上传?发布所有代码以及显示文件未上载的任何错误消息或日志文件条目。is_uploaded_file-return false,我将tmp_名称传递给it@Divakarcool updated@Yash更新的代码没有像$file['upload\u file\u name']这样的东西是我的错。我没有注意到不必要的内部循环。根据您的数组输出,这应该可以做到。当然,我是在请求期间保存它的,我想这是唯一可以保存它的方法)上传的文件返回false,因为传递给它的值错误。在您的输出中,有3个文件出现错误
UPLOAD\u ERR\u NO\u FILE
,这意味着没有向输入传递任何文件@BlurryScript也看到了我上次的编辑。是的,我已经检查了上传错误-它是零…即使很难,我添加了/uploads/{$name}-它不工作,文件夹是0777(可写),没有错误,我的猜测是基于is文件上传-返回false,因此,tmp文件夹中似乎没有上载的文件…它也是0777…我做错了什么?
$name
被假定为
$\u文件['new']['name'][$I]来自我上面的示例。你能用你现在的代码更新你的问题,让我知道你在用什么吗?部分问题可能是
move\u uploaded\u file
中的目标目录应该是绝对或相对路径<代码>/uploads
不是正确的路径。神圣的代码…..$\u文件数组是如何被umi cms更改的,我不知道它到底是什么,但我只是更改了输入html文件的默认名称,它工作了。。。
for ($i = 0; $i < sizeof($_FILES['new']['tmp_name']); ++$i) {
    $name = $_FILES['new']['name'][$i];
    $path = $_FILES['new']['tmp_name'][$i];
    $err  = $_FILES['new']['error'][$i];

    if ($err != UPLOAD_ERR_OK) {
        // check error code
        // report error
        continue;
    }

    if (is_uploaded_file($path)) {
        // do something with the file
    }
}
move_uploaded_file($path, "uploads/{$name}");