Я нахожусь на ранней стадии разработки системы торгов, в которой пользователи могут вставлять элементы, которые они хотят продать. Вот сценарий для копирования изображения с временного пути и сохранения пути изображения к другой папке.
define ("MAX_SIZE","10000"); //This function reads the extension of the file. It is used to determine if the file is an image by checking the extension. function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; }; //This variable is used as a flag. The value is initialized with 0 (meaning no error found) and it will be changed to 1 if an errro occures. If the error occures the file will not be uploaded. $errors = 0; //Checks if the form has been submitted if (isset($_POST['Submit'])) { //Reads the name of the file the user submitted for uploading $image=$_FILES['image']['name']; //If it is not empty if ($image) { //Get the original name of the file from the clients machine $filename = stripslashes($_FILES['image']['name']); //Get the extension of the file in a lower case format $extension = getExtension($filename); $extension = strtolower($extension); //If it is not a known extension, we will suppose it is an error and will not upload the file, otherwize we will do more tests if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) { //Print error message echo '<h1>Unknown extension!</h1>'; $errors=1; } else { //Get the size of the image in bytes //$_FILES['image']['tmp_name'] is the temporary filename of the file in which the uploaded file was stored on the server $size=filesize($_FILES['image']['tmp_name']); //Compare the size with the maxim size we defined and print error if bigger if ($size > MAX_SIZE*111111111111024) { echo '<h1>You have exceeded the size limit!</h1>'; $errors=1; } //We will give an unique name, for example the time in Unix time format $image_name=time().'.'.$extension; //The new name will be containing the full path where will be stored (images folder). $imagepath='C:\\xampp\\htdocs\\biddingsystem\\Images\\' . $image_name; //We verify if the image has been uploaded, and print an error instead $copied = copy($_FILES['image']['tmp_name'], $imagepath); if (!$copied) { echo '<h1>Picture upload failed!</h1>'; $errors=1; } } } } //If no errors registred, print the success message if(isset($_POST['Submit']) && !$errors && isset($_POST['image'])) { echo "<h1>Picture Uploaded Successfully! Try again!</h1>"; }
Затем я вставил путь изображения вместе с другими данными в базу данных MySQL со сценарием ниже и попытался отобразить их обратно пользователю, используя таблицу. Другие данные отработаны хорошо, но для отображения изображения (путь к изображению) отображается только путь изображения, а не изображение.
mysql_query("INSERT INTO items (username, item, price, description, start_date, start_time, imagepath) VALUES ('$username', '$_POST[item]', '$_POST[price]', '$_POST[description]','$_POST[start_date]', '$_POST[start_time]', '$imagepath') ") or die ("Error - Couldn't add item"); echo "Item added successfully"; echo "<h1>You have added the following item:</h1>"; $sql = "SELECT item, price, description, start_time, start_date, imagepath FROM items WHERE username = '$username' AND item='$_POST[item]'"; $result = mysql_query($sql); $row = mysql_fetch_assoc($result); echo"<table border=2> <tr><td>Item</td> <td>Price</td><td>Description</td><td>Start time</td><td>Start date</td><td>Picture</td></tr> <tr><td> $row[item]</td> <td> $row[price]</td> <td> $row[description]</td> <td> $row[start_time]</td> <td> $row[start_date]</td> <td> $row[imagepath]</td> </tr> </table></br>";
Я попытался использовать <img src="<?php $imagepath ?>">
Чтобы показать изображение, но безрезультатно. Я даже попытался сохранить фактическое изображение в базе данных, используя тип BLOB. Однако результатом является страница, заполненная странными символами. Как исправить эту проблему?