因此,我试图制作一个表单将图像上传到服务器中的数据库和文件夹。我无法弄清楚如何使用javascript将图像数据发送到PHP文件。通过Javascript将图像数据传递给PHP
我有以下的Javascript:
function FeedPost() {
$('#FeedResults').show();
document.getElementById('FeedResults').innerHTML = '<center><img src="img/Loading.gif" title="Loading" /></center>';
var post_text = document.getElementById('PostText').value;
var file = document.getElementById('PostImage').files[0];
var file_name = file.name;
var file_size = file.size;
var file_type = file.type;
var dataString = 'feed='+post_text+'&img_name='+file_name+'&img_size='+file_size+'&img_type='+file_type;
$.ajax({
type: "GET",
url: "post_feed.php?"+dataString,
dataType: "json",
success: function(data) {
for (var i in data) {
var entry = data[i];
var success = entry.results.success;
var message = entry.results.message;
}
document.getElementById('FeedResults').innerHTML = '<div class="ResultsText">'+message+'</div>';
}
});
}
在PHP我删除了$ _FILE []编码,以确保该文件变量在PHP中,他们所经历的一切。
这里的PHP代码:
<?php
$feed_message = strip_tags(mysql_real_escape_string($_GET['feed']));
$img_name = strip_tags(mysql_real_escape_string($_GET['img_name']));
$img_size = strip_tags(mysql_real_escape_string($_GET['img_size']));
$img_type = strip_tags(mysql_real_escape_string($_GET['img_type']));
$folder="img/uploads/";
// new file size in KB
$new_size = $img_size/1024;
// new file size in KB
// make file name in lower case
$new_file_name = strtolower($img_name);
// make file name in lower case
$final_file=str_replace(' ','-',$new_file_name);
$img_output = $final_file.''.$img_type;
// Checking post Variables
if($img_size == 0) {
if(strlen($feed_message) < 3) {
$message = 'Post Too Short';
$results = ['success' => false, 'message' => $message];
}
else {
$message = 'Post Successful!';
$results = ['success' => true, 'message' => $message];
$insert = mysql_query("INSERT INTO feed(user,message,img,time) values ('$id','$feed_message','NULL','".time()."')");
}
}
// Post has an image attached
else {
if(strlen($feed_message) < 3) {
$message = 'Post Too Short';
$results = ['success' => false, 'message' => $message];
}
else {
move_uploaded_file($final_file,$folder);
$insert = mysql_query("INSERT INTO feed (user,message,img) values ('$id','$feed_message','$img_output','".time()."')");
$message = 'Image Posted!';
$results = ['success' => true, 'message' => $message];
}
}
$data[] = ['results' => $results];
echo json_encode($data);
?>
输出网址是:post_feed.php饲料=测试.... & img_name =奇才-Khalifa.jpg & img_size = 271330 & img_type =图像/ JPEG
而且PHP输出如下:[{ “结果”:{ “成功”:真实的, “消息”: “图像发布!”}}]
添加HTML:
<form action="javascript:void;" method="post" enctype="multipart/form-data">
<input type="text" id="PostText" placeholder="Message" />
<input type="file" name="file" id="PostImage" />
<input type="submit" value="Submit" class="LoginButton" onClick="FeedPost()" />
<input type="reset" value="Reset" class="LoginButton" />
</form>
警告的mysql_query,mysql_fetch_array,的mysql_connect等扩展在PHP 5.5.0被弃用,并且它是在PHP 7.0.0中删除。相反,应该使用MySQLi或PDO_MySQL扩展。 – Melchizedek
@Glide谢谢你帮我解决这个问题。我已经知道,我很想学习MySQLi的功能,但是我全职工作,没有足够的时间来完成这项工作。 –
上传时使用tmp_name而不是img_name – Beginner