Функция загрузки изображений PHP, сохранение в каталоге, а затем возврат сохраненного URL-адреса изображения

Я пытаюсь загрузить изображение на сервер с помощью PHP и сохранить внутри каталога, а затем вернуть URL-адрес изображения.

HTML:

<input name="photo" type="file" /> 

PHP

 save_string_to_database( upload_img($_POST['photo'])); 

Я не очень разбираюсь в PHP, у меня есть код из SO, но он ничего не сделал. Пожалуйста, помогите мне исправить этот код или дать простой код для загрузки:

 function upload_img($img){ if ((($_FILES[$img]["type"] == "image/gif") || ($_FILES[$img]["type"] == "image/jpeg") || ($_FILES[$img]["type"] == "image/pjpeg") || ($_FILES[$img]["type"] == "image/jpg") || ($_FILES[$img]["type"] == "image/png")) && ($_FILES[$img]["size"] < 20000) && (strlen($_FILES[$img]["name"]) < 51)){ if ($_FILES[$img]["error"] > 0){ echo "Return Code: " . $_FILES[$img]["error"]; } else{ // echo "Upload: " . $_FILES["image"]["name"] . "<br />"; // echo "Type: " . $_FILES["image"]["type"] . "<br />"; // echo "Size: " . ($_FILES["image"]["size"] / 1024) . " Kb<br />"; // echo "Temp file: " . $_FILES["image"]["tmp_name"] . "<br />"; if (file_exists(THEME_DIR."/images/" . $_FILES[$img]["name"])){ echo $_FILES[$img]["name"] . " already exists. "; } else{ move_uploaded_file($_FILES[$img]["tmp_name"],THEME_DIR."/images/" . $_FILES[$img]["name"]); return THEME_DIR."/images/" . $_FILES[$img]["name"]; } } } } 

Solutions Collecting From Web of "Функция загрузки изображений PHP, сохранение в каталоге, а затем возврат сохраненного URL-адреса изображения"

Вот простой.

HTML-форму для загрузки изображения

 <form enctype="multipart/form-data" action="upload.php" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="512000" /> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form> 

Ваш файл PHP, который загружает

 <?php $uploaddir = '/var/www/uploads/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); echo "<p>"; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo "File is valid, and was successfully uploaded.\n"; } else { echo "Upload failed"; } echo "</p>"; echo '<pre>'; echo 'Here is some more debugging info:'; print_r($_FILES); print "</pre>"; ?> 

Источник

Для начала вам понадобится форма multipart / form-data для загрузки. Это обязательно 🙂

 <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="Submit"> </form> 

Часть PHP довольно проста: это приведет к тому, что ваш файл будет сохранен в «upload / {filename}» . Основная часть, которую вы хотите рассмотреть, – это как получить имя файла и вернуться к вашей процедуре write_string_to_database, вы можете сделать простой скрипт после загрузки странице, подобной

 save_string_to_database("upload/" . $_FILES["file"]["name"]); 

сделал бы трюк.

 <?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); } } 

для загрузки файлов

 <?php if(isset($_POST['submit'])) { $ImageName = $_FILES['photo']['name']; $fileElementName = 'photo'; $path = 'images/'; $location = $path . $_FILES['photo']['name']; move_uploaded_file($_FILES['photo']['tmp_name'], $location); } ?> <form name="form1" id="form1" method="post" action="" enctype="multipart/form-data"> <input type="file" name="photo"> <input type="submit" name="submit"> </form>