我正在尝试将图像从我的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;呼应。
答案 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数据库是一个愚蠢的想法。将图像上载到服务器上的文件夹,并将路径(图像路径)写入数据库。这是最佳变体而且更好。