【发布时间】:2017-09-20 14:46:51
【问题描述】:
作为标题,我正在尝试使用 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 名称 varchar(50) 图像块 )
【问题讨论】:
-
使用
LONGBLOB而不是BLOB作为表中的image列 -
@RAUSHANKUMAR:但是,这样做并不是一个好习惯。更好的是,我们可以将图像/文件存储在一个目录中,并将路径保存在数据库列中。
-
$conn = mysql_connect('localhost', 'realegr', 'pass', 'my_realegr');这完全失败了。这不使用 4 个参数,而是 3 个。 -
@NanaPartykar 你的意思是把图片保存在网络服务器的目录吗?为什么会更好?
标签: php mysql file-upload