通过AJAX和PHP通过输入HTML获取和读取文件


Get and read file via input HTML through AJAX and PHP

我试图通过ajax与PHP从HTML输入接收输入文件…下面是HTML:

<form id="file-form-real" method="POST" enctype="multipart/form-data"><input  type="file" class="inputfile" id="carga-excelreal" name="carga-excelreal" accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"><label for="carga-excelreal"><img src="img/MSExcel_2013_logo.svg"><span>Carga Archivo Costo Real</span></label><button type="submit" class="u-button" id="ubutton-real" onclick="uploadManager.sendReal();">Actualizar BD</button></form>

Javascript文件uploadManager.js:

var uploadManager = {
    sendReal: function(){
        var form = document.getElementById("carga-excelreal");
        var nameOr = form.value;
        var splited = nameOr.split("''");
        var largo = splited.length;
        var name = splited[largo-1];
        var file = form.files;
        var formData = new FormData();
        formData.append('file', file);
        formData.append('name', name);
        var ajaxRequest= $.ajax({
              url:"controllers/admin/UploadCostoReal.php",
              data: formData, 
              type:"POST",
              contentType:false,
              processData:false,
              cache:false,
              success:function(response){
                  console.log(response);
              }
        });
    }
}

下面是PHP:

<?php
    $name = $_POST['name'];
    $file = $_FILES['file'];
    if(move_uploaded_file($file,"../../docs/costo_real/".$name)){
        $msg = "Uploaded Ok";
        echo json_encode($msg, JSON_UNESCAPED_UNICODE);
    }else{
        $msg = "There was an error";
        echo json_encode($msg, JSON_UNESCAPED_UNICODE);
    }
?>

使用print_r($_POST)和print_r($_FILES)打印时,输出如下:

Array
(
)
Array
(
    [file] => [object FileList]
    [name] => 1557 - Planilla Gestion de Compras 16.ago.2016.xls
)

我有以下问题:

-如何读取[object FileList],获取文件并将其保存到指定文件夹

-(我已经看到[file]是空的,....为什么? ?

-一般程序是可以的,或者我必须在我的表单标签中使用一个动作属性??

如果有人知道如何放置加载gif(最后一件事并不重要,因为我已经问过的主要事情)

谢谢你的回答。

在你的js var file = form.files;可能需要:

var file = form.files[0];var file = form.files.shift();

我相信form.files将是一个数组