код:
<?php
include "../../include/lib/connection.php";
require_once "../../include/lib/exploitPatch.php";
$log = "";
if ($_FILES && $_FILES['filename']['error'] == UPLOAD_ERR_OK) {
if (isset($_POST['authorname'] ) && isset($_POST['songname'])) {
$file_type = $_FILES['filename']['type'];
$maxsize = 10485760;
if ($_FILES['filename']['size'] >= $maxsize) {
$log = "Max file size is 10mb";
} else {
$hash = "";
$string = $_FILES['filename']['name']; // song_name.mp3
$songname = str_replace('.mp3', '', $string); //song_name
$song_name = str_replace('_', ' ', $songname); // song name
$name = str_replace(' ', '%20', $string); // song%20name
move_uploaded_file($_FILES['filename']['tmp_name'], "song/$songname.mp3");
$size = round($_FILES['filename']['size'] / 1024 / 1024, 2);
$song = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."song/";
$cur = str_replace('upload.php', '', $song) . $name;
$query = $db->prepare("INSERT INTO songs (name, authorID, authorName, size, download, hash)
VALUES (:name, '9', :author, :size, :download, :hash)");
$query->execute([':name' => $song_name, ':download' => $cur, ':author' => "", ':size' => $size, ':hash' => $hash]);
$log = "Success! ID: <b>". $db->lastInsertId() ."</b>";
}
} else {
$log = "Provide a song name and an author name.";
}
}
?>
в папку загружать файлы можно, права есть.
скрипт должен загружать файл в папку song, т.е:
storage/
├─ songs/
│ ├─ song/
│ │ ├─ загруженные файлы с помощью upload.php
│ ├─ upload.php
ошибок скрипт не даёт, они включены и в настройках php и в самом скрипте.
если поможет, вот хтмл форма:
<form class="form" method="post" action="upload.php" enctype='multipart/form-data'>
<input type='text' style="margin-top: 5%;" placeholder="Song Name" name='songname'><br>
<input type='text' placeholder="Author" name='authorname'><br>
<input type='file' name='filename' size='10' accept="audio/*"><br>
<input class="button" type="submit" value="Upload">
</form>
ОС стоящая на моем ВДС: CentOS 7