在我当前的代码中,我只插入文件的文件名,文件存储在一个文件夹中。 我还想将文件存储在我的mysqldatabase中。我怎么能这样做。
我的桌子: ID 文件名 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);
}
}
?>
答案 0 :(得分:4)
就我而言,我不建议将图像存储在数据库中,原因如下: - 管理太重。 - 缺乏速度(虽然很多图像,如果它们很重)。
所以我建议你把图像放在一个目录,它的属性(类型,大小,作者......),当然还有它们到数据库中目录的链接,
答案 1 :(得分:3)
目前我可以想到两种方式
1.使用
BLOB
MEDIUMBLOB
LONGBLOB
mysql中的数据类型... 使用file_get_contents()获取内容并插入内容
使用
text
数据类型..对内容进行编码,然后保存内容..
或者,您只能存储文件的路径...就像存储http://domain/img.jpg
在表格列
答案 2 :(得分:0)
一个例子:
$link = mysqli_connect("localhost", "root", "");
mysqli_select_db($link, "mydb");
$stmt = $link->prepare("insert into myfile (id, arq) values (?, ?)");
$stmt->bind_param("ss", $id, $file);
$id = 5;
$file = file_get_contents("C:\\myfile.png");
$stmt->execute();
如果您想通过某种HTML表单(enctype='multipart/form-data'
)上传文件,请更改行
$file = file_get_contents("C:\\myfile.png");
到
$file = file_get_contents($_FILES['myFileName']['tmp_name']);
myFileName
中的$_FILES['myFileName']
是输入文件html元素的名称。
答案 3 :(得分:-1)
你有什么问题?关于这个问题有很多主题,一个是this