【发布时间】: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