Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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 count()计数不正确_Php_Upload - Fatal编程技术网

PHP count()计数不正确

PHP count()计数不正确,php,upload,Php,Upload,我正在尝试将多个文件上载到一个目录。 我“编写”的代码适用于一个文件,但是当我尝试上载多个文件时,它不起作用。我已经试着确定错误在哪里,我相信这与计数有关。虽然当我尝试回显正在计数的文件数时,无论选择了多少个文件,我总是得到“1”。我知道这只适用于一个文件,因为我返回的变量始终为“1”,因此只适用于一个文件 为了收集文件,我使用html表单和post方法 html: HTML文件上传 要上载的文件: 或者把文件放在这里 上传文件 我使用的javascript支持拖放功能,源于: 罪魁祸首

我正在尝试将多个文件上载到一个目录。 我“编写”的代码适用于一个文件,但是当我尝试上载多个文件时,它不起作用。我已经试着确定错误在哪里,我相信这与计数有关。虽然当我尝试回显正在计数的文件数时,无论选择了多少个文件,我总是得到“1”。我知道这只适用于一个文件,因为我返回的变量始终为“1”,因此只适用于一个文件

为了收集文件,我使用html表单和post方法 html:


HTML文件上传
要上载的文件:
或者把文件放在这里
上传文件
我使用的javascript支持拖放功能,源于:

罪魁祸首 PHP:

if(isset($\u FILES['fileselect']['tmp\u name'])){
//上载的文件数
$num_files=count($_files['fileselect']['tmp_name']);
echo$num_文件;
/**循环遍历文件数组***/
(i=0;i 350000美元){
$messages[]=“您的文件太大。
”; $ok=0; } //这是我们的限制文件类型条件 如果($uploaded_type==“text/php”){ $messages[]=“无PHP文件
”; $ok=0; } //在这里,我们检查$ok是否未被错误设置为0 如果($ok==0){ $messages[]=“抱歉,您的文件未上载”; } //如果一切正常,我们尝试上传它 否则{ 如果(move_uploads_file($_FILES['fileselect']['tmp_name'][$i],“uploads/{$newImg}”){ 回显“文件”.basename($\u文件['uploadedfile']['name'][$i])”已上载; 回声“
”; //echo$文件类型; //回声“
”; //echo$unique; //回声“施梅克尔!”; //回声“
”; //echo$文件大小; //回声“
”; //echo$文件名; $insertSQL=“插入采访\媒体\图像集”; $insertSQL.=“文件类型=”$the_file_type',”; $insertSQL.=“fileRef=”$newImg',”; $insertSQL.=“文件大小=”$the_file_size',”; $insertSQL.=“文件名=”$the_file_name'; echo$insertSQL; //mysql\u查询($insertSQL); //echo mysql_error(); }否则{ $messages[]=“很抱歉,上载文件时出现问题。”; } } } } }
我创建了一个文件,内容如下,运行PHP版本5.5.15,并且正确计数:

<?php
if(isset($_FILES['fileselect']['tmp_name']))
{
    echo "<pre>"; print_r($_FILES); echo "</pre>";
    echo "Number of files uploaded: " . count($_FILES['fileselect']['name']);
}
?>

<form id="upload" action="files_upload.php" method="POST" enctype="multipart/form-data">

<fieldset>
<legend>HTML File Upload</legend>

<input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="300000" />

<div>
    <label for="fileselect">Files to upload:</label>
    <input type="file" id="fileselect" name="fileselect[]" multiple="multiple" />
    <div id="filedrag">or drop files here</div>
</div>

<div id="submit">
    <button type="submit">Upload Files</button>
</div>

</fieldset>

</form>

HTML文件上传
要上载的文件:
或者把文件放在这里
上传文件

您的代码在我的案例中运行,$num\u文件在计数后返回真值

还有一件事要做,就是从for循环中删除“=”,然后这样写

$_FILES['filename']['tmp_name'][3].
我希望这能帮助你


对不起我的英语

您是否打印($\u文件)以查看它实际包含的内容?我相信这是
$\u FILES['fileselect'][$I]['attribute']
而不是
$\u FILES['fileselect']['attribute'][$I]
上面的所有内容:“for($I=0;$I我的第一个猜测是PHP
count()
函数中没有bug尝试这样做:
$\u FILES['fileselect'[$I]['tmp\u name']
count($\u FILES'fileselect']))
谢谢大家。虽然从“$num\u files=count($num\u files['fileselect']['tmp\u name'])中去掉['tmp\u name'”),现在得到5,但仍然只将第一个条目添加到目录中。您需要更好地解释您的答案
<?php
if(isset($_FILES['fileselect']['tmp_name']))
{
    echo "<pre>"; print_r($_FILES); echo "</pre>";
    echo "Number of files uploaded: " . count($_FILES['fileselect']['name']);
}
?>

<form id="upload" action="files_upload.php" method="POST" enctype="multipart/form-data">

<fieldset>
<legend>HTML File Upload</legend>

<input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="300000" />

<div>
    <label for="fileselect">Files to upload:</label>
    <input type="file" id="fileselect" name="fileselect[]" multiple="multiple" />
    <div id="filedrag">or drop files here</div>
</div>

<div id="submit">
    <button type="submit">Upload Files</button>
</div>

</fieldset>

</form>
for( $i=0; $i<$num_files; $i++)
$_FILES['filename']['tmp_name'][3].