使用ajax上传文件

时间:2017-04-24 00:52:39

标签: javascript php ajax file upload

我一直在寻找我能在这里找到的所有答案,但似乎没有一个对我有用,不知道为什么。

我正在尝试使用ajax上传文件,但该文件永远不会到达PHP中的$ _FILES数组,我只进入$ _POST数组,但它不会让我得到它的名称或大小文件。我已经尝试过在这里解答的每一个解决方案,但似乎没有解决我的问题,我不知道为什么,我认为有一些我没有看到。如果有人能帮助我那将是非常棒的。

HTML代码

<form name='formuploadgraphic'>
     <input type='file' name='archivo1' id='archivo1' onchange='subegraphic()'>
</form>

JS / AJAX代码

function subegraphic()
{
    var formData = new FormData();
    formData.append("archivo1", $("#formuploadgraphic")[0]);

    $.ajax({
        url: "subegraphic.php",
        type: "post",
        data: formData,
        cache: false,
        contentType: false,
        processData: false,
        async: true
    })
     .done(
         function(data)
         {
             alert(data);
         }
     );
}

PHP代码

<?php
    $upload_folder ='graphics';
    $nombre_archivo = $_FILES['archivo1']['name'];
    $tipo_archivo = $_FILES['archivo1']['type'];
    $tamano_archivo = $_FILES['archivo1']['size'];
    $tmp_archivo = $_FILES['archivo1']['tmp_name'];
    $extension = pathinfo($_FILES['archivo1']['name'], PATHINFO_EXTENSION);
    $archivador = $upload_folder . '/' . $nombre_archivo;
    echo $nombre_archivo;
?>

如果我使用该代码,这是来自php的回复:


注意:未定义的索引: C:\ xampp \ htdocs \ airpost \ home \ subegraphic.php 4 上的archivo1
注意:未定义索引: C:\ xampp \ htdocs \ airpost \ home \ subegraphic.php 5 上的archivo1
注意:未定义索引: C:\ xampp \ htdocs \ airpost \ home \ subegraphic.php 6 的文件中的archivo1
注意:未定义的索引: C:\ xampp \ htdocs \ airpost \ home \ subegraphic.php 7 的文件中的archivo1
注意:未定义的索引: C:\ xampp \ htdocs \ airpost \ home \ subegraphic.php 中的 8 <“>中的archivo1

如果有人能说出我的代码会出现什么问题。 Thx提前。

PS:php.ini

中的上传文件为ON

2 个答案:

答案 0 :(得分:1)

在您发布的代码段中,您的jQuery选择器指向undefined元素

更改

formData.append("archivo1", $("#formuploadgraphic")[0]);

formData.append("archivo1", $("#archivo1").prop('files')[0]);

答案 1 :(得分:-1)

您是否尝试过更改此行

var formData = new FormData();
formData.append("archivo1", $("#formuploadgraphic")[0]);

var formData = new FormData($("#formuploadgraphic")[0]);

并将 enctype =&#34; multipart / form-data&#34; 添加到您的表单属性

<form name='formuploadgraphic' enctype="multipart/form-data">