PHP在mysql数据库中插入文件
在我当前的代码中,我只插入文件的文件名,文件存储在一个文件夹中。 我也想将文件存储在我的mysqldatabase中。我怎样才能做到这一点。PHP在mysql数据库中插入文件
我的表: ID FILE_NAME fcontent(LONGBLOB)
include 'db.php';
if(isset($_FILES['image'])){
$errors= array();
$tablename = "files";
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$content =$_FILES['image']['fcontent']; // content in database
$sql="INSERT INTO $tablename(file_name,content)VALUES('" . mysql_real_escape_string($file_name) . "')"; // here i need to insert the content i assume
$file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); //convert to lower
$extensions = array("jpeg","jpg","png","txt","html","php","gif"); // File extension that are
allowed
if(in_array($file_ext,$extensions)=== false){ // check if value exists in array
$errors[]="extension not allowed.";
}
if($file_size > 2097152){ // cant be greater than 2mb
$errors[]='File size must be excately 2 MB';
}
if(empty($errors)==true){
mysql_query($sql);
move_uploaded_file($file_tmp,"upload/".$file_name);
echo "Success";
header("location:files.php"); // Send back to main page
}else{
print_r($errors);
}
}
?>
就我而言,我不建议将图像存储在数据库中,原因如下: - 管理太重。 - 速度不足(尽管更多的图像如果很重)。
所以我建议你把图像在一个目录,它的属性(类型,大小,作者..),当然还有他们的链接到数据库的目录,
目前我能想到的两种方式
1.使用mysql中
BLOB
MEDIUMBLOB
LONGBLOB
数据类型... 得到使用file_get_contents()和插入内容内容
-
使用
text
数据类型..编码的内容,然后保存内容..
或者,你可以在表列中存储只是文件的路径......像商店http://domain/img.jpg
但个人,我不喜欢存储图像数据库..因为它增加了大小歧管 – alwaysLearn 2013-03-25 16:56:31
你能告诉我一个如何做到这一点的例子吗? – Ben 2013-03-25 16:59:27
看到这个http://forum.codecall.net/topic/40286-tutorial-storing-images-in-mysql-with-php/#sthash.HqQQleWW.dpbs – alwaysLearn 2013-03-25 17:00:38
一般来说它来存储文件的最佳实践在一个文件夹中,并将名称存储在数据库中。数据库中是否存在需要该文件的特定原因? – 2013-03-25 16:46:23
你从** NOT **开始将文件放入数据库。很少有使用情况证明它的合理性,并且缺点是令人讨厌的。你也开始有适当的上传处理代码,并且** NOT **假设上传成功。 – 2013-03-25 16:46:52
为什么要将文件存储在数据库中?在大多数应用程序中,这是一个糟糕的主意。考虑到你现在不知道该怎么做,我想知道你是否也真的想过要做这件事的原因。 – 2013-03-25 16:46:58