修改上传图片?解决方案
程序员文章站
2024-01-21 16:50:52
...
修改上传图片?
选择图片地址:
我可以上传图片,可修改就成了问题,因为图片是以二进制流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"); 输出的前边加上这个
我可以上传图片,可修改就成了问题,因为图片是以二进制流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"); 输出的前边加上这个
相关文章
相关视频