【问题标题】:file upload using jquery Ajax and PHP使用 jquery Ajax 和 PHP 上传文件
【发布时间】:2017-02-15 14:46:59
【问题描述】:

我正在尝试使用 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();
}
}

?>

但是,我提交表单后无法将文件上传到目录,而其他部分未存储在数据库中。另一方面,如果我提交没有文件的表单,则文本全部存储到数据库中。在这种情况下我做错了什么?已经想了一个小时了。谢谢

【问题讨论】:

  • 您是否检查了您尝试将文件上传到的目录的权限?作为测试,chmod 777 目录并运行您的脚本。请记住,777 允许该目录上的所有用户读取、写入、执行...
  • @Craig 刚刚检查了权限,它是 777。所以我想不是那个问题
  • 不要使用答案中的信息来编辑问题,因为这会混淆问题,并且可能无法让人们给您正确的答案。

标签: php jquery ajax forms file-upload


【解决方案1】:
<form id="data" enctype="multipart/form-data"> 

我认为您缺少的 enctype="multipart/form-data" 来自,
希望对你有帮助

jQuery AJAX file upload PHP

使用以上网址查找解决方案

【讨论】:

    【解决方案2】:

    您必须使用 enctype 修复您的表单:

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

    我建议你这个read

    【讨论】:

    • 我在有和没有这些代码的情况下都做过,但它仍然不起作用。
    • 在表单中添加名称,而不是 id。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2015-05-11
    • 2017-08-25
    • 2014-05-07
    相关资源
    最近更新 更多