Кто-нибудь знает хороший учебник о том, как загрузить файл с помощью php и сохранить путь к файлу на сервере sql?
Для загрузки файла вам нужна хотя бы форма HTML POST с кодировкой multipart/form-data
. В этом случае вы вводите поле input type="file"
чтобы просмотреть файл и кнопку отправки, чтобы отправить форму.
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit"> </form>
В upload.php
загруженный файл $_FILES
с именем поля в качестве ключа.
$file = $_FILES['file'];
Вы можете получить его имя следующим образом:
$name = $file['name'];
Вам нужно перенести его в постоянное место с помощью move_uploaded_file()
, иначе он потеряется:
$path = "/uploads/" . basename($name); if (move_uploaded_file($file['tmp_name'], $path)) { // Move succeed. } else { // Move failed. Possible duplicate? }
Вы можете сохранить путь в базе данных обычным способом:
$sql = "INSERT INTO file (path) VALUES ('" . mysqli_real_escape_string($path) . "')"; // ...
С http://www.w3schools.com/php/php_file_upload.asp
HTML
<html> <body> <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> </body> </html>
PHP
<?php if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; //<- This is it } } ?>
Обратите внимание, что для загрузки файла вам необходимо указать путь для сохранения файла. Если вы сохраните файл, вы уже знаете его путь.