Javascript 未定义索引->;PHP上传不工作

Javascript 未定义索引->;PHP上传不工作,javascript,php,html,forms,Javascript,Php,Html,Forms,PHP上传: 注意:未定义索引:文件位于 在线:$count=count($_FILES['file']['name']) 运行我发现的几乎所有带有此错误的代码…仍然没有得到任何结果 PHP代码: <?php $count = 0; if(isset($_POST['uploadFinish'])) { $bcode = $_POST['code']; $newpath = "upload/".$bcode."/"; if (!file_exists($newp

PHP上传:

注意:未定义索引:文件位于

在线:
$count=count($_FILES['file']['name'])

运行我发现的几乎所有带有此错误的代码…仍然没有得到任何结果

PHP代码:

<?php
$count = 0;
if(isset($_POST['uploadFinish']))  { 
    $bcode = $_POST['code'];
    $newpath = "upload/".$bcode."/";
    if (!file_exists($newpath)) {
        mkdir($newpath, 0755, true);
    }
    $count = count($_FILES['file']['name']);
    if($count < 1) { 
        $message = "At least 1 file required"; $count='';
    } else {
        move_uploaded_file($_FILES['file']['tmp_name'], $newpath.'/File-'.$bcode);
    }
}
?>

HTML/JS:

<button class="btn btn-primary btntrg123" id="uploadBtn" style="background: #008489; border-color: #008489">Upload file</button> 
<form style="display: none!important;" id="uploadConf" method="post" enctype="multipart/form-data">
    <div style='height: 0px;width:0px; overflow:hidden;'>
        <input type="file" id="file" name="file[]" multiple="multiple" onclick="getFile()" class="btn btn-primary inptri123">
    </div>
    <input type="hidden" name="code" value="<?php echo $code; ?>">
    <input name="uploadFinish" value="1" type="hidden"> 
</form>
<script type="text/javascript">
$(".btntrg123").click(function(event){ 
    event.preventDefault();
    $(".inptri123").trigger('click');
}); 
function getFile(){ 
    document.getElementById("file").onchange = function () {
        var file = this.value;
        console.log(file);
        var form = document.getElementById('uploadConf');
        form.submit();
    };
}
</script>
上传文件

我想你想检查上传的文件数量

HTML

上传文件
$(“.btntrg123”)。单击(函数(事件){
event.preventDefault();
$(“.inptri123”).trigger('click');
}); 
函数getFile(){
document.getElementById(“文件”).onchange=function(){
var file=this.value;
console.log(文件);
var form=document.getElementById('uploadConf');
表单提交();
};
}
试试这个

    <?php
$count = 0;
if(isset($_POST['uploadFinish']))  { 
    $bcode = $_POST['code'];
    $newpath = "upload/".$bcode."/";
    echo $newpath;
    if (!file_exists($newpath)) {
        mkdir($newpath, 0755, true);
    }
    $count = count($_FILES['file']['name']);
    if($count < 1) { 
        $message = "At least 1 file required"; $count='';
    } else {
        $total = count($_FILES['file']['name']);
        for( $i=0 ; $i < $total ; $i++ ) {
                move_uploaded_file($_FILES['file']['tmp_name'][$i], $newpath.'/File-'.$bcode.$_FILES['file']['name'][$i]);
        }
    }
}
?>

  • 在表单中添加了action属性 action=“upload.php”

  • 在PHP代码中做了一些细微的更改来处理上传

  • 当多文件上传时,您可以使用

    $name=$_FILES['file']['name'][$index];
    
    $tmp=$_FILES['file']['tmp_name'][$index];
    
    
    您的代码应该如下所示

    
    
    
    $total = count($_FILES['file']['name']);
    for( $i=0 ; $i < $total ; $i++ ) {
    
    
      $tmp= $_FILES['file']['tmp_name'][$i];
    
      if (!(empty($tmp )){
    
        $path= "/upload/" . $_FILES['file']['name'][$i];
    
    
        if(move_uploaded_file($tmp, $path)) {
    
             echo $_FILES['file']['name'][$i]. ' uploaded';
           }
      }
    }
    
    
    
    $total=计数($_文件['file']['name']);
    对于($i=0;$i<$total;$i++){
    $tmp=$\u文件['file']['tmp\u名称'][$i];
    如果(!(空($tmp)){
    $path=“/upload/”$\u文件['file']['name'][$i];
    if(移动上传的文件($tmp$path)){
    echo$_文件['file']['name'][$i].'upload';
    }
    }
    }
    
    您似乎只是错过了一个表单
    操作

    应该是这样的:

    
    
    或者,您可以使用
    javascript
    为表单附加事件:

    function processForm(e) {
        if (e.preventDefault) e.preventDefault();
    
        /* do what you want with the form */
    
        // You must return false to prevent the default form behavior
        return false;
    }
    
    var form = document.getElementById('uploadConf');
    if (form.attachEvent) {
        form.attachEvent("submit", processForm);
    } else {
        form.addEventListener("submit", processForm);
    }
    

    $\u FILES['file']
    如果您的代码是可读的(格式很好),那么它将是arraySmall Point。它也有可能是可调试的
    var\u dump($\u FILES);
    来检查它实际包含的内容。var\u dump($\u FILES);=>array(0){}我在您的表单上没有看到任何ajax请求或
    操作
    。相同:注意:未定义索引:$count行上的文件是否可以用此代码替换php并在上载后检查返回0。这意味着该文件未以某种方式在表单中提交。可能是因为按钮的工作方式和表单的提交方式。可能是原因,让我检查一下当我上传新代码时,它会返回$newpath值。只有纯文本:upload/codePHP注意:未定义索引:带if的行上的文件(count($\u FILES['file']['name']))@Laurenti你仍然可以得到未定义的索引文件!你有上传文件夹吗?没有手动创建上传文件夹是的,我收到了PHP通知:未定义的索引:文件在$total上(1次),然后像1000个相同的通知$tmp内为:)上传一个13kb的imgSubmitting表单:var form=document.getElementById('uploadConf')); 表单提交();您只需
    提交
    它,但没有
    操作
    事件
    的表单将不起任何作用(只需在某些浏览器中重新加载页面)。您需要说明,应该在服务器上执行什么文件或操作。php(在我的逻辑中..我有点初学者)捕获的是,然后执行代码。将php移动到一个文件中,并将action=“upload.php”放在表单中,并添加了在getFile中触发的提交输入(删除表单.submit()),我收到了相同的通知。@LaurentiuLomnasan使用开发工具检查浏览器的“网络”选项卡。文件提交了吗?我看到文件(initiator upload.php)状态为200。
    function processForm(e) {
        if (e.preventDefault) e.preventDefault();
    
        /* do what you want with the form */
    
        // You must return false to prevent the default form behavior
        return false;
    }
    
    var form = document.getElementById('uploadConf');
    if (form.attachEvent) {
        form.attachEvent("submit", processForm);
    } else {
        form.addEventListener("submit", processForm);
    }