Я пытаюсь создать сайт, на котором я могу загрузить файл в базу данных sql, но он не работает.
Это мой код;
<html> <head> <title>Upload an image</title> </head> <body> <form action="upload.php" method="POST" enctype="multipart/form-data"> File: <input type="file" name="Image"> <input type="submit" value="Upload"> </form> <?php //Connecting to the database mysql_connect("localhost","root","") or die(mysql_error()); mysql_select_db("picturedatabase") or die(mysql_error()); $file = $_FILES['Image']['tmp_name']; if(!isset($file)) { echo "Select an image"; } else { $image = addslashes(file_get_contents($_FILES['Image']['tmp_name'])); $image_name = addslashes($FILES['Image']['name']); $image_size = getimagesize($FILES['Image']['tmp_name']); } if($image_size==FALSE) { echo "That's not an image."; } else { if(!$insert = mysql_query("INSERT INTO images VALUES('','$image_name','$image')")) { echo "There was a problem uploading the image"; } else { $lastid = mysql_insert_id(); echo "Image uploaded!<p />Your image:<p /> <img src=show.php?id=$lastid>"; } } ?> </body> </html>
И когда я запускаю файл, появляется материал формы (кнопки и я также могу выбрать файл), но он также говорит
"Notice: Undefined index: Image in C:\ProgramFiles\Xampp\htdocs\Database\upload.php on line 16 Notice: Undefined variable: image_size in C:\ProgramFiles\Xampp\htdocs\Database\upload.php on line 29"
Может ли кто-нибудь сказать мне, что я сделал не так, и помочь мне исправить это?
Вы должны сохранять файлы в какой-либо папке во время процесса загрузки и сохранять имя файла в базе данных, поэтому позже вы можете вызвать имя файла из базы данных и связать его как гиперссылку для загрузки, я использую следующий код для загрузки изображений в папке с именами files
и сохранении имени файлов в базе данных. В конце у меня есть имя файла в переменной $newname
if ($_FILES['file']['name']) { $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 500000) && in_array($extension, $allowedExts) ) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { $ext = end(explode(".", $_FILES["file"]["name"])); $filename = current(explode(".", $_FILES["file"]["name"])); $newname = $filename . '_' . time() . '.' . $ext; move_uploaded_file($_FILES["file"]["tmp_name"], "files/" . $newname); } } else { echo "<div class='alert alert-success'>Image type or size is not valid.</div>"; } }
Я надеюсь, это поможет вам:
<html> <head> <title>Upload an image</title> </head> <body> <?php function output_errors($error) { echo '<ul><li><font color="red">'.$error.'</font>/li></ul>'; } if($_POST) { //Connecting to the database $connect = mysqli_connect("localhost", "root" ,"", "picturedatabase"); $name = $_FILES['Image']['name']; if(!empty($name)) { $tmp = $_FILES['Image']['tmp_name']; $type = $_FILES['Image']['type']; $allowed_type = array('image/jpg', 'image/jpeg', 'image/gif', 'image/png'); if(!in_array($type, $allowed_type)) { $error[] = $type. ' is not allowed file type'; } } else { $error[] = 'There are empty fields'; } if(!empty($error)) { echo output_errors($error); } else if(empty($error)){ $path = 'images/'.$name; $query = mysqli_query($connect, "INSERT INTO `images` (`image`) VALUES ('$path')"); if(!$query) { echo 'Insert into db went wrong'; } else { move_uploaded_file($tmp, $path); echo '<font color="green">Upload succesful</font>'; } } } ?> <form action="upload.php" method="POST" enctype="multipart/form-data"> File: <input type="file" name="Image"> <input type="submit" value="Upload"> </form> </body> </html>