2017-04-24 159 views
1

我一直在寻找我可以在这里找到的所有答案,但似乎没有人为我工作,不知道为什么。使用ajax上传文件

我试图使用ajax上传文件,但文件永远不会到达PHP中的$ _FILES数组,但我只将它添加到$ _POST数组中,但它不会让我获取名称或大小文件。我已经尝试了每个解决方案都在这里回答,但似乎没有解决我的问题,我不知道为什么,我觉得有什么我没有看到。如果任何人都可以帮助我,那真是太棒了。

HTML代码

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

THE JS/AJAX CODE

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的答复如果我使用该代码:


通知:未定义指数:archivo1在C:\ XAMPP \ htdocs中\上线airpost \家\ subegraphic.php

通知:未定义指数:archivo1在C:\ XAMPP \ htdocs中\ airpost \上线家庭\ subegraphic.php

通知:未定义指数:archivo1在C:\ XAMPP \ htdocs中\ airpost \家\ subegraphic.php在线路

通知:未定义指数:archivo1在C:\ XAMPP \ htdocs中\上线airpost \家\ subegraphic.php

通知:未定义指数:archivo1在C:\ XAMPP \ htdocs中\ airpost \上线家里\ subegraphic.php

如果nyone可以告诉我的代码会有什么问题。 Thx提前。

PS:上传文件在php中为ON。INI

+0

你试过[本教程(https://www.sanwebe.com/ 2012/06/AJAX文件上传与 - PHP-和jQuery的)?我也有兴趣回答你的问题,因为我手边有类似的困境。 – Pyromonk

回答

1

从代码Sn ippet你贴,你的jQuery选择指向一个undefined元素

变化

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

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

我刚刚测试了您的修复程序并且ID未修复,但它像99%的解决方案,问题确实是选择器,所以我尝试了不同的解决方案,直到我添加了[0],因为我一次只发送一个文件,这就像一个魅力。所以该行改为:formData.append("archivo1", $("#formuploadgraphic").files[0]);,它的工作。好吧,我没有idead如何设置为答案中的代码,但它确实工作,所以非常感谢 – KahnCerbero

+0

我的坏,我错过了,当输入答案。我现在编辑了原始答案。 – tolujimoh

-1

你有没有试图改变这一行

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

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

,并且还加入ENCTYPE = “的multipart/form-data的”到窗体属性

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

好吧,我实施了这两个更改,我仍然得到相同的回应,我似乎无法找到该代码的问题 – KahnCerbero