通过AJAX将文件上传到服务器

时间:2013-07-10 01:50:10

标签: php ajax

所以我一直在努力尝试将我的网站转换为使用PHP和HTML来上传带有和不带图像的statusupdates以使用PHP,AJAX和HTML,因此它不需要为了成功更新数据库等等,直到'我必须上传图像。

我的JavaScript / jQuery / AJAX代码如下所示:

$(function() {  
$("#statusupdate").on('submit', function (e) {  
    var category = $("#statusupdate input[type=radio]:checked").val();
var text = $("textarea#statusupdate_text").val();
var file = $("input#file").val();
$.ajax({  
type: "POST",  
url: "snippets/post_statusupdatequery.php",  
data: { category : category, text : text, file : file },  
success: function() {  
$('#statusupdate').html("<div id='success_status'></div>");  
$('#success_status').html("<h2>Post Submitted!</h2>")  
.append("<p>We will be in touch soon.</p>")  
.hide();  
}  
});
    return false;  
e.preventDefault();
});  
});

http://pastebin.com/fSGFa32D 我的PHP代码如下所示:

if (!empty($_FILES['userfile'])) {
$raw_text = $_POST['text'];
$text = mysql_real_escape_string($raw_text);
$uploaddir = '/var/www/images/imageupdate/';
$filename = "".$id."-".$time."";
$uploadfilenam = basename($filename);
$uploadfilename = $uploadfilenam.".png";
$uploadfile = $uploaddir.$uploadfilename;

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
mysql_query("INSERT INTO imagepost
    (userid, text, image, date)
    VALUES('$id', '$text', '$uploadfilename', '$time') ") or die(mysql_error());
             }
 } else {
    echo '<script>alert(" Select a file to upload! ");</script>';
  }

http://pastebin.com/6Yam6Mtd

目前据我所知,它在PHP代码中的第一个if语句失败,并且我已经在遍历stackoverflow上搜索和搜索但是我找不到与此类似的问题。

请帮助,我错过了什么让文件“通过AJAX发送”到PHP?

1 个答案:

答案 0 :(得分:0)

您无法使用此javascript语法上传文件

var file = $("input#file").val();

使用jquery ajax form提交包含文件元素的表单。还要确保表单有enctype=multipart/form-data

要首先设置ajax表单,请设置html表单

<form id="myform" ...>.........</form>

然后,只需执行

即可将jquery代码附加到表单提交事件
$('#myform').ajaxForm(); //you can pass the same options as you would pass to $.ajax();