ajax上传多图到php服务器的方法
一般上传图片到服务器有两种方式:
1、把图片转换成二进制直接存储到数据库里
2、把图片存储到本地目录,并将图片地址存储到数据库里
先粗浅地谈下我对这两种存储方法的优劣点的认识:
1、把图片转换成二进制直接存储到数据库的优点是有利于数据的备份和迁移,但缺点就是会影响数据读写速率。一般大图、多图不建议用此方式,一般存储用户头像、富文本内容存储时可以应用此方式。
2、将图片存储到本地目录,在数据库上只存储图片路径的优点是有利于数据的读写,毕竟存一个地址要比存整个图片的大小要小得多。但是缺点就不利于数据的备份和迁移。
先介绍一下存储图片路径的方法:
html代码:
ajax请求:
functionfsubmit(){
varform1=document.getElementById("form1");
varfd=newFormData(form1);
$.ajax({
url:"photo.php",
type:"POST",
data:fd,
processData:false,
contentType:false,
success:function(response,status,xhr){
console.log(xhr);
varjson=$.parseJSON(response);
varresult='';
result+='
';
result+='
';
result+='
'+json['photo1'];
result+='
'+json['photo2'];
$('#result').html(result);
}
});
returnfalse;
}
php代码:photo.php
//注意要在目录下新建一个名为img的文件夹用来存放图片
$path2="img/".$filename2;
if(move_uploaded_file($_FILES['photo1']['tmp_name'],$path1)&&move_uploaded_file($_FILES['photo2']['tmp_name'],$path2)){
$response['isSuccess']=true;
$response['photo1']=$path1;
$response['photo2']=$path2;
}else{
$response['isSuccess']=false;
}
echojson_encode($response);
?>
数据库表我就不贴了,存图片地址,字段类型直接用字符型就可以了。
现在在介绍一下把图片转换成二进制直接存进数据库的方法:
这里我没有用ajax请求,直接用表单的post请求提交数据
html代码:
上传头像