繁体   English   中英

未定义索引-> PHP上传不起作用

[英]Undefined index -> PHP Upload not working

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>

这两个代码是相同的php文件。 从其他文件运行php,结果相同。

Console.log给了我文件,但没有上载到服务器。 文件夹已创建。

我想您想检查上传的文件数量。

HTML

<button class="btn btn-primary btntrg123" id="uploadBtn" style="background: #008489; border-color: #008489">Upload file</button> 
<form action="upload.php" 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="0">
    <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>

尝试这个

    <?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]);
        }
    }
}
?>
  1. 向表单添加了动作属性。

动作=“ upload.php”

  1. 对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';
       }
  }
}

看来您只是错过了表单action

应该是这样的:

<form style="display: none!important;" id="uploadConf" method="post" enctype="multipart/form-data" action="/your/api/call">

或者,您可以使用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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM