我想用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();
}
}
?>
但是,我不能上传文件到目录后,我提交表单,其他部分不存储在数据库中。另一方面,如果我提交没有文件的表单,文本全部存储到数据库中。在这种情况下我做错了什么?现在一直在想这个问题。由于
您是否检查了您尝试上传文件的目录的权限?作为一个测试,chmod 777目录并运行你的脚本。请记住,777允许读,写,执行该目录上的所有用户... – Craig
@克雷格刚刚检查了许可,它是777.所以我想这不是问题 –
不要编辑问题与答案中的信息因为这会让问题变得阴云密布,并且不允许人们给你正确的答案。 –