2013-07-21 98 views
0

我想上传文件并发送到服务器而不刷新页面。使用ajax,jquery,php上传文件

我有以下线在我的HTML文件

<form id="FileUploader" enctype="multipart/form-data" > 
    <input type="file" name="mfile" id="mfile" style='width:100%;' onchange="uploaded()"> 
</form> 

function uploaded() 
    { 
     alert($('form#FileUploader')[0]); 
     var formData=new FormData($('form#FileUploader')[0]); 
     //alert(formData); 
      $.ajax({ 
      url: "<?php echo $_SESSION['webpage']."/upload" ?>", 
      type: "POST", 
      async: true, 
      dataType: "JSONP", 
      data : formData 
      }) 
      .success (function(response){ 
       alert(response); 
      }) 
      .error (function()  { alert("Error") ; }) ; 


    } 

upload.php的文件

if ($_FILES["mfile"]["error"] >0) 
    { 
     echo "Error: " ; 
    } 
    else 
    { 
     if (file_exists("upload_email_files/" . $_FILES["mfile"]["name"])) 
      { 
      echo $_POST["file"]. " already exists. "; 
      } 
     else 
      { 
      $otp= move_uploaded_file('$_FILES["mfile"]"name"]','/../upload_templates/'); 
      } 
    } 

它不工作。可有人帮我在这? 它不是在upload.php中,并给我错误非法调用。

感谢, 希里什

+0

uplaoded()应该被上传(),在手不会解决问题,但应该这样做 – curtisk

+0

如果这是您想要发送请求的文件的名称,那么当您使用'upload.php'时,您在'url'中使用'Upload_file' est to ie'url:“<?php echo $ _SESSION ['webpage']。”/ upload.php“?>”' – Cyclonecode

+0

这是输入错误编辑帖子 – user2510115

回答

1

检查了这一点我没有测试它希望这将工作http://blog.new-bamboo.co.uk/2012/01/10/ridiculously-simple-ajax-uploads-with-formdata

<form id="FileUploader" enctype="multipart/form-data" > 
    <input type="file" name="mfile" id="mfile" style='width:100%;' onchange="uploaded()"> 
</form> 

function uploaded() 
    { 
     alert($('form#FileUploader')[0]); 
     var formData=new FormData($('form#FileUploader'));//remove [0] 
     //alert(formData); 
      $.ajax({ 
      url: "<?php echo $_SESSION['webpage']."/upload" ?>", 
      type: "POST", 
      //async: true,//Remove this line 
      //dataType: "JSONP",//Remove this line 
      data : formData 
      }) 
      .success (function(response){ 
       alert(response); 
      }) 
      .error (function()  { alert("Error") ; }) ; 


    } 
+0

是的,但FormData不工作的IE浏览器。所以我想要一些可以在IE上运行的东西。 – user2510115

0

试试这个:)

<form id="FileUploader" enctype="multipart/form-data" > 
    <input type="file" name="mfile" id="mfile" style='width:100%;' onchange="uploaded()"> 
</form> 
$(document).ready(function() { 
$("#form-geninfo").submit(function(e) 
{ 
    e.preventDefault(); 
    alert($('form#FileUploader')[0]); 
    var formData=new FormData($('form#FileUploader')[0]); 
    //alert(formData); 
     $.ajax({ 
     url: "<?php echo $_SESSION['webpage']."/upload" ?>", 
     type: "POST", 
     async: true, 
     dataType: "JSONP", 
     data : formData 
     }) 
     .success (function(response){ 
      alert(response); 
     }) 
     .error (function()  { alert("Error") ; }) ; 


} 
});