下面是01.html文件的内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="jquery.js"></script>
</head>
<body>
<input type="file" onchange=f()>
<script>
function f(){
$.ajax({
url:"02.php",
data:{a:this},
type:"post"
})
}
</script>
</body>
</html>
下面是02.php文件的内容:
<?php
$fileName = $_POST["a"]["name"];//文件的名称
$AX=mysqli_connect("127.0.0.1", "root", "root");//连接mysql服务器
mysqli_select_db($AX, "ax");//连接数据库
mysqli_query($AX, "set name utf8");//执行语句:设置中文编码
$A6="insert into ax02
(文档名)
values
('$fileName')
";
mysqli_query($AX,$A6);//执行语句:添加数据
运行01.html,并没有在数据库中添加数据。
哪里出了问题?
ajax传递文件需要用到FormData对象,不能按照键值对那样传递。而且文件对象要用move_uploaded_file保存上传的数据,然后数据库存文件名,
大概示例如下,有帮助麻烦点个采纳,谢谢~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://g.csdnimg.cn/??lib/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>
<input type="file" onchange="f(this)">
<script>
function f(el){//
var data=new FormData();
data.append('file',el.files[0]);////
$.ajax({
url:"02.php",
data:data,/////////
type:"post",
processData:false,/////////
contentType: false,
complete:function(xhr){
alert('php执行完毕,服务器端返回\n'+xhr.responseText)
}
})
}
</script>
</body>
</html>
02.php
<?php
// 设置文件的保存路径
//如果文件是中文文件名,则需要使用 iconv() 函数将文件名转换为 gbk 编码,否则将会出现乱码
$fileName = 'upload/'.iconv('UTF-8','gbk',basename($_FILES['file']['name']));
// 将用户上传的文件保存到 upload 目录中
if (move_uploaded_file($_FILES['file']['tmp_name'],$fileName)){
$fileName = $_POST["a"]["name"];//文件的名称
$AX=mysqli_connect("127.0.0.1", "root", "root");//连接mysql服务器
mysqli_select_db($AX, "ax");//连接数据库
mysqli_query($AX, "set name utf8");//执行语句:设置中文编码
$A6="insert into ax02(文档名)values('$fileName')";
mysqli_query($AX,$A6);//执行语句:添加数据
}
else{
echo '文件上传失败';
}
?>
和服务器说了发送是文件数据格式了吗