Я новичок в php и нуждаюсь в помощи.
Я работаю с простым альбомом и пытаюсь загрузить фотографии в папку альбома, которую я выбираю из этой опции, но получаю ошибки, говорящие "Нет такого файла или каталога" и "Невозможно переместить".
Я попытался изменить часть "$ album_name" в пути к "$ row ['name']" или "$ album_id", но никто из них не работал. Тем не менее, установка фиксированного url работает (например, 'uploads/bla/'.$ random_name. '. Jpg').
Как включить название альбома, которое я выбираю из опции в пути? Загруженные файлы хранятся за пределами папок (в папке "uploads").
<form enctype='multipart/form-data' method='post'>
Select album: <br/>
<select name='album'>
<?php
$query = mysqli_query($dbc, "SELECT id, name FROM albums ORDER BY id DESC");
while($row = mysqli_fetch_array($query)) {
$album_id = $row['id'];
$album_name = $row['name'];
echo "<option value=".$album_id.">".$album_name."</option>";
}
?>
</select><br/><br/>
<?php
if(isset($_POST['upload'])) {
$album_id = $_POST['album'];
$file = $_FILES['file']['name'];
$file_tmp = $_FILES['file']['tmp_name'];
$random_name = rand();
if(empty($file)) {
echo "Please choose a file to upload.<br/> <br/>";
} else {
move_uploaded_file($file_tmp, 'uploads/'.**$album_name**.'/'.$random_name.'.jpg');
mysqli_query ($dbc, "INSERT INTO pictures VALUES('', '$album_id', '$random_name.jpg')");
echo "Photo uploaded!!!<br/> <br/> ";
}
}
?>
Select photo: <br/>
<input type='file' name='file' /><br/><br/>
<input type='submit' name='upload' value='Upload' />
</form>
Есть много вещей, которые нужно учитывать, когда вы получаете такие ошибки.
find / -name php.ini
если вы находитесь в Linux, чтобы найти файл. По умолчанию максимальный размер файла составляет 2 МБ. Вы также должны попытаться обработать ошибку через $_FILE["file"]["error"]
чтобы увидеть более подробную ошибку. Список ошибок содержится в официальной документации PHP здесь: http://php.net/manual/en/features.file-upload.errors.php
0774
да ...0777
не так многоchmod 0774
представляет собой угрозу безопасности, аchmod 0777
"не так уж много"? Извините, что скажу, что0774
будет означать, что другие могут только читать, но не могут писать и выполнять, и это не создает угрозы безопасности. В случае, если вы предлагаете пользователю использоватьchmod 0774
в директории для загрузки изображений, я все равно сожалею, что если директория принадлежит пользователю Debian (как пример), это демон пользователя (который использует Apache) не сможет загружать свои файлы из-за недостаточных прав.