如何通过Ajax上传图片并且保存至服务器的Mysql数据库中

头头不上道 2013-05-08 02:45:41
【急求】以下这个Ajax上传保存图片的代码如何与再下面的服务器PHP程序建立联系。

function saveImage()
{
var imgData = cropper.getCroppedImageData(180, 180);

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(e)
{
if(xhr.readyState == 4)
{
if(xhr.status == 200)
{
document.getElementById("status").innerHTML =xmlHtpRq.responseText;
}
}
};

xhr.open("post", "http://localhost:82/post_action.php", true);
var data = new FormData();
data.append("username", "flashlizi");
data.append("size", 180);
data.append("file", imgData);
xhr.send(data);
}

<?php

header("Content-Type: text/html; charset=gb2312");

if(!isset($_FILES['file'])){
echo "no upload";
die;
}
//首先将文件上传到pics文件夹中
list($flag3,$msg3)=uploaderFILES($_FILES['file']);
//如果成功
if($flag3==true) {
$file3=$msg3;
$PSize = filesize($msg3);
//取得文件内容
$mysqlPicture = addslashes(fread(fopen($msg3, "r"), $PSize));
//构造SQL语句并保存到数据库中
$sql="INSERT INTO `pic` (`pic_userid` , `pic_content` ) VALUES ( '2', '".$mysqlPicture."')";
include_once("common_db.php");
$link=getLink();
mysql_query($sql,$link);
unlink($msg3);//删除pics文件夹中该文件
echo "上传成功!<br><a href=display_all.php >查看图片</a>";
}else{
//失败提示错误原因
echo $msg3;
}



/**
* 文件上传的自定义 函数
* Enter description here...
* @param $file
* @param $upload_dir 存放路径
* @return array
*/
function uploaderFILES($file,$upload_dir="pics/"){
$file_types_array=array("jpg","gif","png","jpeg");
$max_file_size = 1048576;

if($file["error"]!=UPLOAD_ERR_OK) return array(false,"文件上传出现错误!");
if($file["name"]=="")return array(false,"文件上传名为空!");
if($file["size"]>$max_file_size) return array(false,"文件大小太大了!");
$oldFilename = $file["name"];
$filename = explode(".",$oldFilename);
$filenameext = $filename[count($filename)-1];

if(!in_array($filenameext,$file_types_array)) return array(false,"不是有效的图片文件!");
$newFilename="_".time()."_".rand(10000,20000).".".$filenameext;


if(move_uploaded_file($file["tmp_name"], $upload_dir.'/'.$newFilename)){
return array(true, $upload_dir.$newFilename);
}else{
return array(false,"文件:$oldFilename 没有上传成功!");
}


}

?>
...全文
212 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你的ie运行不了,ie不支持formdata对象 至于php处理和普通的表单提交一样,该怎么样就怎么样
未知数 2013-05-08
  • 打赏
  • 举报
回复
文件的ajax上传的实现不是用ajax ajax是不能传递文件的,html的文件上传只能提交表单 js可以模拟ajax上传效果,原理是将刷新放到iframe中,然后提取iframe中的服务器响应,调用回调函数 你可以找现成的js实现的ajax上传组件 也可以找flash上传组件,比js做的更强大

52,792

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧