作为标题我试图使用PHP在DB Mysql上传图像: 以下是脚本:(我知道我应该使用mysqli ...)
HTML格式:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="generator" content="AlterVista - Editor HTML"/>
<title> Carica un'immagine </title>
</head>
<body>
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="3000000">
Invia questo elemento: <input name="userfile" type="file"></br>
<input type="submit" value="Carica">
</form>
</body>
</html>
PHP脚本:
<?php
//Connect to DB
$conn = mysql_connect('localhost', 'realegr', 'pass', 'my_realegr');
if (!$conn){
die("Could Not Connect to MySQL!");
}
if(!mysql_select_db("my_realegr")){
die("Could Not Open Database:" . mysql_error());
}
//file properties
$file = $_FILES['userfile']['tmp_name'];
if (!isset($file)){
echo "<p>Please Select an Image</p>";
} else {
$image = mysql_real_escape_string(file_get_contents($_FILES['userfile']['tmp_name']));
$image_name = mysql_real_escape_string($_FILES['userfile']['name']);
$image_size = getimagesize($_FILES['userfile']['tmp_name']);
if ($image_size==FALSE) {
echo "<p>NOT AN IMAGE</p>";
} else {
echo "<p>File is an Image. Processing...</p>";
if(!$insert = mysql_query("INSERT INTO images (name, image) VALUES ('$image_name','$image')")){
echo ("<p>Error Uploading Image: " . mysql_error() . "</p>");
} else {
$lastid = mysql_insert_id();
echo "<p>Success!</p>";
echo "<img src=get.php?id=$lastid>";
}
}
}
?>
显然还有另一个php脚本(get.php),但问题出在这个问题上。 我得到的错误是这样的: 文件是图像。处理...
错误上传图片:第1行的列'图片'的数据太长
我无法理解原因......(图像仅为70 kb)
(这是我的表: id int主键Auto_increment name varchar(50) 图像blob )
答案 0 :(得分:1)
不要将图像数据保存在数据库中。没有必要,甚至可能导致您的网站运行得更慢!
相反,请将其保存到使用move_uploaded_file()
http://php.net/manual/en/function.move-uploaded-file.php
执行此操作后,将路径存储到数据库中的文件中!
答案 1 :(得分:-2)
目前你有这一行:"INSERT INTO images (name, image) VALUES ('$image_name','$image')"
。如果您尝试将其更改为以下内容,该怎么办?
<?php
// NOTICE THE "LOAD_FILE"
// WHERE $fileToLoad IS THE PATH TO THE UPLOADED IMAGE-FILE
"INSERT INTO images (name, image)
VALUES('$image_name', LOAD_FILE({$fileToLoad}))";
但是,根据经验将图像存储在数据库中始终不是最好的选择...考虑将图像存储在专用文件夹中,只需保存数据库中的地址....