使用html和php将图像上传到mysql

时间:2016-08-07 08:12:19

标签: php html mysql

我正在尝试将图像从我的html表单上传到我的mysql blob列。 我觉得php文件并没有根据所有的测试来接收文件,试图找出什么不起作用。

相关的HTML代码:

<form action = "insert.php" method="post" enctype="multipart/form-data">
<input type="file" name="myimage">
<input type="submit" name = "Insert" value="Insert">
</form>

相关的PHP代码:

$imagename=$_FILES["myimage"]["name"];

if(getimagesize($FILES['myimage']['tmp_name']) == FALSE){
    echo "no image";
}
//Get the content of the image and then add slashes to it 
$imagetmp = addslashes($_FILES['myimage']['tmp_name']);
$image = file_get_contents($imagetmp);
$sql = "INSERT INTO locations (image) VALUES ('$image')";
$res = mysql_query($sql) or die(mysql_error());

我相信php并没有收到该文件,因为我总是得到我的&#34;没有图像&#34;呼应。

3 个答案:

答案 0 :(得分:0)

你遇到的什么样的错误没有注意到。我发现你的代码存在问题。我认为它应该有效。

<form action = "insert.php" method="post" enctype="multipart/form-data">

警告

此扩展在PHP 5.5.0中已弃用,并已在PHP 7.0.0中删除。相反,应该使用MySQLi或PDO_MySQL扩展。

答案 1 :(得分:0)

在插入数据库之前,我认为你应该base64_encode数据。

$imagename=$_FILES["myimage"]["name"];
if( getimagesize( $FILES['myimage']['tmp_name'] ) == FALSE ){
    exit( "no image" );
}

$image = base64_encode( file_get_contents( $_FILES['myimage']['tmp_name'] ) );

要使用mysqli,您可以执行以下操作:

$servername = "localhost";
$username = "foo";
$password = "xxx";
$dbname = "bar";

$db=new mysqli( $servername, $username, $password, $dbname );

$sql='insert into `locations` set `image`=?';
$stmt=$db->prepare( $sql );

$stmt->bind_param( 's', $image );
if( $stmt ) $stmt->execute();

$db->close();

$sql = "INSERT INTO `locations` (`image`) VALUES ('$image')";
$res = mysql_query( $sql ) or die( mysql_error() );

答案 2 :(得分:0)

将图像上传到mysql数据库是一个愚蠢的想法。将图像上载到服务器上的文件夹,并将路径(图像路径)写入数据库。这是最佳变体而且更好。