一般上传图片到服务器有两种方式:
1、把图片转换成二进制直接存储到数据库里
2、把图片存储到本地目录,并将图片地址存储到数据库里
先粗浅地谈下我对这两种存储方法的优劣点的认识:
1、把图片转换成二进制直接存储到数据库的优点是有利于数据的备份和迁移,但缺点就是会影响数据读写速率。一般大图、多图不建议用此方式,一般存储用户头像、富文本内容存储时可以应用此方式。
2、将图片存储到本地目录,在数据库上只存储图片路径的优点是有利于数据的读写,毕竟存一个地址要比存整个图片的大小要小得多。但是缺点就不利于数据的备份和迁移。
先介绍一下存储图片路径的方法:
html代码:
form id="form1">
span style="white-space:pre;"> /span>div class="bookImg">
div class="img-box">
input type="file" name="photo1" id="" title="文件不超过200kb,大小最佳为60*60">
/div>
div class="img-box">
input type="file" name="photo2" id="" title="文件不超过200kb,大小最佳为60*60">
/div>
/div>
input type="button" class="bookBtn btnBlue" id="publishBook" value="发布图书" onclick="fsubmit()"/>
/form>
ajax请求:
function fsubmit() {
var form1=document.getElementById("form1");
var fd =new FormData(form1);
$.ajax({
url: "photo.php",
type: "POST",
data: fd,
processData: false,
contentType: false,
success: function(response,status,xhr){
console.log(xhr);
var json=$.parseJSON(response);
var result = '';
result += 'br/>img src="' + json['photo1'] + '" height="100" />';
result += 'br/>img src="' + json['photo2'] + '" height="100" />';
result += 'br/>' + json['photo1'];
result += 'br/>' + json['photo2'];
$('#result').html(result);
}
});
return false;
}
php代码:photo.php
?php
require('conn.php');
$nameTag = time();
$filename1 = $nameTag . '0' . substr($_FILES['photo1']['name'], strrpos($_FILES['photo1']['name'],'.'));
$filename2 = $nameTag . '1' . substr($_FILES['photo2']['name'], strrpos($_FILES['photo2']['name'],'.'));
$response = array();
$path1 = "img/" . $filename1; span style="color:#ff0000;">//注意要在目录下新建一个名为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;
}
echo json_encode($response);
?>
数据库表我就不贴了,存图片地址,字段类型直接用字符型就可以了。
现在在介绍一下把图片转换成二进制直接存进数据库的方法:
这里我没有用ajax请求,直接用表单的post 请求提交数据
html代码:
form action="photo.php">
span style="white-space:pre;"> /span>div class="pic">
input type="file" name="photo" id="" title="文件不超过200kb,大小最佳为60*60" onchange="imgPreview(this)">上传头像
/div>
/form>
php代码:photo.php
?php
require('conn.php');
$image = mysql_real_escape_string(file_get_contents($_FILES['photo']['tmp_name']));
$sqlstr = "insert into user(photo) values('".$image."')";
@mysql_query($sqlstr) or die(mysql_error());
exit();
?>
这样就把图片转换成二进制并储存进数据库了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:- ajax实现异步文件或图片上传功能
- 基于ajax实现文件上传并显示进度条
- 利用ajaxfileupload插件实现文件上传无刷新的具体方法
- 使用ajaxfileupload.js实现ajax上传文件php版
- ajaxFileUpload.js插件支持多文件上传的方法
- ajax(iframe)无刷新提交表单、上传文件
- ajax 文件上传应用简单实现
- AJAX和JSP实现的基于WEB的文件上传的进度控制代码
- Ajax方式提交带文件上传的表单及隐藏iframe应用