如何通过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 没有上传成功!");
}


}

?>
...全文
200 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2013-05-08
  • 打赏
  • 举报
回复
你的ie运行不了,ie不支持formdata对象 至于php处理和普通的表单提交一样,该怎么样就怎么样
未知数 2013-05-08
  • 打赏
  • 举报
回复
文件的ajax上传的实现不是用ajax ajax是不能传递文件的,html的文件上传只能提交表单 js可以模拟ajax上传效果,原理是将刷新放到iframe中,然后提取iframe中的服务器响应,调用回调函数 你可以找现成的js实现的ajax上传组件 也可以找flash上传组件,比js做的更强大
酒店管理系统分为前台和后台两个部分,其后台供管理员管理系统之用,包括客房类型设置模块、客房设置模块以及操作员设置三个子模块,具体的功能模块如下。 客房类型设置模块:该模块用来管理酒店的所有客房类型,包括新增客房类型、编辑已有客房类型、删除客房类型等功能。 客房设置模块:该模块用来管理酒店的所有客房信息,包括新增客房、编辑已有客房、删除客房等功能。 操作员设置模块:该模块用来管理酒店的操作员信息,包括新增操作员、编辑已有操作员信息、删除操作信息等功能。 系统前台供酒店所有工作人员使用,包括入住登记模块、结账模块、预定模块、客户管理模块以及业务统计五个模块。具体的功能模块如下。 入住登记模块:该模块用来登记客户的入住信息,其入住信息包括登记信息、客人信息以及费用信息三部分。 结账模块:该模块用来处理客户的退房信息,只需要知道客户所住的房间号码,就能进行退房结账。 预定模块:该模块用来处理客户的预定信息,除了可以新增预定信息外,还可以对已有的预定信息进行管理。 客户管理模块:该模块用来管理客户的登记信息,包括新增客户信息、编译已有客户信息、删除客户信息等功能。 业务统计模块:该模块用来统计酒店的客房出租率,并且已图形报表的形式来显示出租率信息。 本系统的开发工具具体如下。 系统开发平台:MyEclipse 6.5。 数据库管理系统软件:MySQL 5.0。 java开发包:JDK 5.0以上。 Web服务器:Tomcat 6.0。 本系统采用MVC架构模式开发,具体技术如下。 AJAX框架:使用ExtJS技术开发 显示层:使用JSP技术开发 数据访问层:使用DAO模式开发 持久层:使用Hibernate框架开发 首页访问地址 :http://localhost:8080/JavaPrj_9/首页配置 页面 修改 打开web.xml 修改 即可 /WEB-INF/pages/userLogin.jsp 复制代码 数据库配置 为hotel-hibernate.xml 文件 测试了将近2个小时 系统跑的还不错 一下小细节 bug 大家可以自己去调整下

52,797

社区成员

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

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