Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从$\u文件嵌套数组中获取文件名_Php_Arrays_Forms_Foreach_Nested - Fatal编程技术网

Php 如何从$\u文件嵌套数组中获取文件名

Php 如何从$\u文件嵌套数组中获取文件名,php,arrays,forms,foreach,nested,Php,Arrays,Forms,Foreach,Nested,我试图列出所有通过表单上传的图像文件名,然后通过电子邮件发送 fileupload.html: <form method="post" action="upload.php" enctype="multipart/form-data" id="upload" > <input type="file" name="filesupl[]" multiple id="files" /> <input type="submit" name="UploadBtn" value

我试图列出所有通过表单上传的图像文件名,然后通过电子邮件发送

fileupload.html:

<form method="post" action="upload.php" enctype="multipart/form-data" id="upload" >
<input type="file" name="filesupl[]" multiple id="files" />
<input type="submit" name="UploadBtn" value="Upload" class="formtext" id="UploadBtn">
</form>

upload.php:

$art_file = $_FILES['filesupl'];
$filecounter = 1;
$count = 0;
foreach ( $art_file as $i => $art_inner ){ 
                    echo $filecounter . ") " . $art_file[$i]['name'] . "<br />"; $filecounter++; 
        }
if ($_SERVER['REQUEST_METHOD'] == 'POST' and isset($_FILES['filesupl']))
    {
        $extension = pathinfo($_FILES['filesupl']['name'], PATHINFO_EXTENSION);

        // Upload files
        // loop all files
        foreach ( $_FILES['filesupl']['name'] as $i => $name )
        {
            // if file not uploaded then skip it
            if ( !is_uploaded_file($_FILES['filesupl']['tmp_name'][$i]) )
                continue;

            // skip large files
            if ( $_FILES['filesupl']['size'][$i] >= $max_size )
                continue;

            // skip unprotected files
            if( !in_array(pathinfo($name, PATHINFO_EXTENSION), $extensions) )
                continue;

            // now we can move uploaded files
            if( move_uploaded_file($_FILES["filesupl"]["tmp_name"][$i], $dir . $name) )
                $count++;
        }

    }

echo json_encode(array('count' => $count));
$art_file=$_文件['filesupl'];
$filecounter=1;
$count=0;
foreach($i=>$art\u文件内部){
echo$filecounter.“)”$art_文件[$i]['name']。“
;$filecounter++; } 如果($\u服务器['REQUEST\u METHOD']='POST'和isset($\u文件['filesupl'])) { $extension=pathinfo($_文件['filesupl']['name'],pathinfo_扩展名); //上传文件 //循环所有文件 foreach($_FILES['filesupl']['name']作为$i=>$name) { //如果文件未上载,则跳过它 如果(!是上传的文件($文件['filesupl']['tmp\u name'][$i])) 继续; //跳过大文件 如果($\u文件['filesupl']['size'][$i]>=$max\u大小) 继续; //跳过未受保护的文件 if(!in_数组(pathinfo($name,pathinfo_扩展名),$extensions)) 继续; //现在我们可以移动上传的文件了 如果(移动上传的文件($文件[“文件上传”][“tmp文件名”][$i],$dir.$name)) $count++; } } echo json_编码(数组('count'=>$count));
我尝试了很多方法来访问上传文件的“名称”(上面的代码就是其中之一),但都没有成功

我正在尝试列出所有上传图像的文件名

如果您的唯一目的是获取上传文件的所有文件名,那么您的代码应该如下所示:

foreach($_FILES['filesupl']['name'] as $name){
    // echo $name . '<br />';
}
$count = count($_FILES['filesupl']['name']);
for($i = 0; $i < $count; ++$i){
    // if file not uploaded then skip it
    if ( !is_uploaded_file($_FILES['filesupl']['tmp_name'][$i]) )
        continue;

    // skip large files
    if ( $_FILES['filesupl']['size'][$i] >= $max_size )
        continue;

    // get file extension
    $extension = pathinfo($_FILES['filesupl']['name'][$i], PATHINFO_EXTENSION);

    // skip unprotected files
    if( !in_array($extension, $extensions) )
        continue;

    // now we can move uploaded files
    if( move_uploaded_file($_FILES["filesupl"]["tmp_name"][$i], $dir . $_FILES['filesupl']['name'][$i])){
        // file has been uploaded
    }
}

echo json_encode(array('count' => $count));
我正在尝试列出所有上传图像的文件名

如果您的唯一目的是获取上传文件的所有文件名,那么您的代码应该如下所示:

foreach($_FILES['filesupl']['name'] as $name){
    // echo $name . '<br />';
}
$count = count($_FILES['filesupl']['name']);
for($i = 0; $i < $count; ++$i){
    // if file not uploaded then skip it
    if ( !is_uploaded_file($_FILES['filesupl']['tmp_name'][$i]) )
        continue;

    // skip large files
    if ( $_FILES['filesupl']['size'][$i] >= $max_size )
        continue;

    // get file extension
    $extension = pathinfo($_FILES['filesupl']['name'][$i], PATHINFO_EXTENSION);

    // skip unprotected files
    if( !in_array($extension, $extensions) )
        continue;

    // now we can move uploaded files
    if( move_uploaded_file($_FILES["filesupl"]["tmp_name"][$i], $dir . $_FILES['filesupl']['name'][$i])){
        // file has been uploaded
    }
}

echo json_encode(array('count' => $count));

这是一个普通数组,有什么问题吗?您试图确定扩展太快了
$\u FILES['filesupl']['name']
是一个数组。我试图使用foreach在电子邮件中输出文件名,但对于从嵌套数组上载的每个文件,访问该变量时遇到问题。每次代码执行时,我要么得到一个空结果,要么得到5次单词“Array”。这是一个正常的数组,有什么问题吗?您试图过早地确定扩展名
$\u FILES['filesupl']['name']
是一个数组。我试图使用foreach在电子邮件中输出文件名,但对于从嵌套数组上载的每个文件,访问该变量时遇到问题。每次代码执行时,我都会得到5次空结果或单词“Array”。谢谢你的建议!我已经实现了建议的第二部分。不幸的是,当我希望获得文件名时(根据您的建议使用foreach),我仍然收到一个空值。@CharlieMarrero在
for
循环中,您试图获取文件名的位置,以及如何获取文件名?请粘贴您的代码并在此处提供链接。Rajdeep Paul,这是指向我要输出文件名区域的pastebin链接:(这是upload.php页面的一部分,在文件上传之后)@CharlieMarrero,这是因为您没有将文件名附加到
$pobody
。foreach的循环应该是这样的,Rajdeep Paul,谢谢你指出这一点!那肯定不见了。然而,添加后,我仍然收到一封没有列出文件名的电子邮件,即使成功上传了2张图片。谢谢你的建议!我已经实现了建议的第二部分。不幸的是,当我希望获得文件名时(根据您的建议使用foreach),我仍然收到一个空值。@CharlieMarrero在
for
循环中,您试图获取文件名的位置,以及如何获取文件名?请粘贴您的代码并在此处提供链接。Rajdeep Paul,这是指向我要输出文件名区域的pastebin链接:(这是upload.php页面的一部分,在文件上传之后)@CharlieMarrero,这是因为您没有将文件名附加到
$pobody
。foreach的循环应该是这样的,Rajdeep Paul,谢谢你指出这一点!那肯定不见了。然而,添加它后,我仍然收到一封没有列出文件名的电子邮件,即使在成功上传了2张图片之后。