PHP中的配置文件图片保存选项

时间:2014-12-23 10:36:18

标签: php mysql mysqli

我在php中创建了一个应用程序。我如何保存用户的个人资料图片?使用base64编码将它们保存在db中是个好主意,就像这样

<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAWgBaAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAAB..." />

或其他任何东西

4 个答案:

答案 0 :(得分:2)

这通常只适用于非常小的CSS图像,这些图像将在IE兼容性无关紧要的情况下一起使用(如CSS sprites),保存请求比可缓存性更重要

它有许多值得注意的缺点:

  • 在IE6和7中根本不起作用。

  • 仅适用于IE8中最大32k的资源。这是限制 在base64编码后适用。换句话说,不再是 32768个字符。

  • 它会保存一个请求,但会改变HTML页面!并使 图像无法缓存。它们每次包含页面时都会加载 样式表加载。

  • Base64编码使图像尺寸膨胀33%。

  • 如果在gzip压缩资源中提供,数据:图像几乎可以肯定 将成为服务器资源的可怕压力!图像是 传统上CPU非常密集,压缩很少 缩小规模。

答案 1 :(得分:1)

将图像存储在服务器中,并将图像路径存储在数据库中。这将减少数据库服务器上的额外过载。

答案 2 :(得分:0)

最好将文件路径存储在数据库中,而不是将文件存储在数据库中。数据库用于结构化数据,而不是用于blob。此外,数据库存储通常比文件系统存储更昂贵。服务器不需要任何特殊的编码或处理来访问文件系统中的图像

答案 3 :(得分:0)

使用javascript将base64图像“src”复制到文本框中。使用base64 url​​文本框发布表单。最好将url保存在数据库中,而不是将文件保存在数据库中。 您可以使用以下PHP代码保存base64图像:

    <?php
define('UPLOAD_DIR', 'images/');
$base64img=$_POST['base64img'];
if (stristr($base64img, "data:image/jpeg;base64,")) {
$base64img = str_replace('data:image/jpeg;base64,', '', $base64img);
$uid=time();
$data = base64_decode($base64img);
$file = UPLOAD_DIR . $uid.'.jpg';
file_put_contents($file, $data);
}elseif (stristr($base64img, "data:image/png;base64,")) {
$base64img = str_replace('data:image/png;base64,', '', $base64img);
$uid=time();
$data = base64_decode($base64img);
$file = UPLOAD_DIR . $uid.'.png';
file_put_contents($file, $data);
}elseif (stristr($base64img, "data:image/jpg;base64,")) {
$base64img = str_replace('data:image/jpg;base64,', '', $base64img); 
$uid=time();
$data = base64_decode($base64img);
$file = UPLOAD_DIR . $uid.'.jpg';
file_put_contents($file, $data);
}
?>