2016-10-06 152 views
0

我想用jQuery Ajax和PHP将文件上传到文件夹。使用jQuery Ajax和PHP上传文件

这是我用来上传文件的表单。

<form id="data" method="post" enctype="multipart/form-data"> 
       <textarea name="txtmessage" placeholder="Write your post here"></textarea> 
       </br> 
         <label>Subject:</label> 
         <input type="text" id="subcode" name="subcode" placeholder="Enter Subject Code e.g.: BIT304"> 
         <br/> 
         <input name="img" type="file" /><br/> 
         <button type="submit" class="btn btn-default" id="btnAddAction" name="submit" value="Submit">Share</button> 
       </form> 
       <script> 
       $("form#data").submit(function(event){ 
         var formData = new FormData($(this)[0]); 
         $.ajax({ 
         url: 'formprocessing.php', 
         type: 'POST', 
         data: formData, 
         async: false, 
         cache: false, 
         contentType: false, 
         processData: false, 
         success: function (returndata) { 
          $("#comment-list-box").append(returndata); 

         $("form#data")[0].reset(); 
         $("#loaderIcon").hide(); 
         }, 
         error:function(){}     
         }); 
        }); 
       </script> 

,这是formprocessing.php处理的形式。

<?php 
session_start(); 
require_once("dbcontroller.php"); 
$db_handle = new DBController(); 
$id = $_SESSION['id']; 

$subcode = $_POST['subcode']; 
$txtmessage = $_POST['txtmessage']; 

$file = $_FILES['img']['name']; 

if($file != "") { 
    $subcode = "General"; 
    $target = "uploads/"; 
    $fileTarget = $target.$file; 
    $tempFileName = $FILES["img"]["tmp_name"]; 

    $infile = move_uploaded_file($tempFileName,$fileTarget); 

    if($infile){ 
     $result= mysql_query("INSERT INTO fyp_comment(message, subject, userid, timeDate, image) VALUES('$txtmessage', '$subcode', '$id', now(), '$fileTarget')"); 
     if($result){ 
      $insert_id = mysql_insert_id(); 
     } 
    } 
} 
else{ 
    $result = mysql_query("INSERT INTO fyp_comment(message, subject, userid, timeDate) VALUES('$txtmessage', '$subcode', '$id', now())"); 
       if($result){ 
        $insert_id = mysql_insert_id(); 
} 
} 

?> 

但是,我不能上传文件到目录后,我提交表单,其他部分不存储在数据库中。另一方面,如果我提交没有文件的表单,文本全部存储到数据库中。在这种情况下我做错了什么?现在一直在想这个问题。由于

+0

您是否检查了您尝试上传文件的目录的权限?作为一个测试,chmod 777目录并运行你的脚本。请记住,777允许读,写,执行该目录上的所有用户... – Craig

+0

@克雷格刚刚检查了许可,它是777.所以我想这不是问题 –

+1

不要编辑问题与答案中的信息因为这会让问题变得阴云密布,并且不允许人们给你正确的答案。 –

回答

0

你必须用加密类型解决您的形式:

<form name="data" method="post" enctype="multipart/form-data"> 
    ... 
</form> 

我建议你这个read

+0

我已经完成了它,但没有这些代码,但它仍然无法正常工作。 –

+0

将名称添加到窗体而不是id。 – sensorario

0
<form id="data" enctype="multipart/form-data"> 

我觉得你失踪ENCTYPE = “的multipart/form-data的” 从,
希望这可以帮到你

jQuery AJAX file upload PHP

使用上面的url找到解决方案

+0

不,它不工作或没有它。 –