首页 > 后端开发 > php教程 > 修改上传图片?解决方案

修改上传图片?解决方案

WBOY
发布: 2016-06-13 13:40:50
原创
922 人浏览过

修改上传图片?


  选择图片地址:
 
 
我可以上传图片,可修改就成了问题,因为图片是以二进制流blob的形式储存到数据库中,所以不知道怎么读到这个地址,就是在我修改了图片名字没修改地址时,存在数据库中的图片地址不变

------解决方案--------------------
图片转为二进制 

$img_file = 'xxx.jpg';
$fp = fopen($img_file, 'rb');
$content = fread($fp, filesize($img_file)); //二进制数据
fclose($fp);



查询 显示:
header("content-type:image/jpeg");
list($st1,$st2)=explode(" ",microtime());
$startTime=$st1+$st2;
//$picContent=file_get_contents("1.jpg");
$lnk=mysql_connect("localhost","root","123456");
mysql_select_db("test");
//$picContents=base64_encode($picContent);
//$re=mysql_query("insert into pic values(NULL,'$picContents')");
$re=mysql_query("select * from pic");
!$re && die("查询失败!~");
$rs=mysql_fetch_array($re);
mysql_close($lnk);
echo base64_decode($rs['pic']);
list($st1,$st2)=explode(" ",microtime());
$time2=$st1+$st2;
echo '执行时间'.($time2-$startTime);
?>


建议:将二进制数据先base64编码后,再加入数据库,不然一些特殊符号会导致插入不成功。
------解决方案--------------------
上传处理:

//由于上传过来的图片被保存在一个临时文件中,所以
//我们仅需要读取该文件就可以获取传过来的图片
$fp = fopen($_FILES["myFile"]["tmp_name"],"rb");
$buf = addslashes(fread($fp,$_FILES["myFile"]["size"]));
//创建一个PDO对象
$dbh = new PDO("mysql:host=localhost;port=
3306;dbname=myDatabase", "root", "verysecret");
//执行插入操作并将结果保存在一个变量中
$result = $dbh->query("INSERT INTO employees 
(firstName,lastName,EmpType,age,picture) VALUES 
('myFirst','myLast','myEmpType',50,'$buf')");
//获取影响的行数
if ($result->rowCount() >0) {
echo("数据已插入。");
} else {
echo("不能执行插入操作。");
}
//显式的关闭PDO连接
$dbh = NULL;
?>

------解决方案--------------------
存在数据库就跟平时修改文字一样做就可以...
当他是字串就可以了
------解决方案--------------------
header("content-type:image/jpeg"); 输出的前边加上这个
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板