Я создаю на своем локальном хосте (файлы не будут опубликованы на удаленном сервере) веб-приложение, в которое я добавляю некоторые функции, которые мне нужны. Одним из них является загрузка файла WAV, который я хочу загружать в разные папки для каждой загрузки.
Я использовал тот код, который работает с обычной папкой. Я отредактировал его, добавив некоторые нужные мне параметры (уберите пробел в имени файла и т. Д.), Но когда я помещаю «$ folderUuid» в «move_upload_file», папка создается, но файл не загружается в нее.
Еще одна особенность, которую я не смогу понять, куда добавить, — это создание папки uuid только при загрузке файла, а не при каждом обновлении страницы. Я прочитал эту дискуссию PHP File Upload Создание Каталога и понимаю, что я должен использовать $ _SESSION, но мой код не работает.
Вот код php:
if(isset($_POST['submit']))
{
$allowedExts = array("wav");
$fileName = $_FILES['file']['name'];
$extension = substr($fileName, strrpos($fileName, '.') + 1);
if(!is_dir("inputFiles/". $_SESSION["folder"] ."/")) {
mkdir(uniqid('inputFiles/'), 0700). $_SESSION["folder"] ."/" ;
}
if(in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Name: " . $_FILES["file"]["name"] . "<br />";
echo "File kind: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
if (file_exists("inputFiles/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " file già esistente. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"], $folderUuid . str_replace(" ", "",$_FILES["file"]["name"]));
print "<br />";
echo "Saved in: " . "inputFiles/" . $_FILES["file"]["name"];
print "<br />";
}
}
}
else
{
echo "Invalid file";
}
}
Вот HTML-код:
<form method="post" enctype="multipart/form-data" >
<label for="file"><span>Filename:</span></label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
Надеюсь, что кто-то может помочь мне решить эти проблемы.
С уважением
Брус
Попробуйте этот код
if(isset($_POST['submit']))
{
$file_name = $_FILES['file']['name'];
$tmp_file = $_FILES['file']['tmp_name'];
//create directory from the file
$temp = explode('.', $file_name);
$dir = $temp[0];
$extension = strtolower($temp[1]);
$allowedExts = array("wav");
if(!is_dir('inputFiles/'.$dir)){
mkdir("inputFiles/$dir",0700);
}
if(in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Name: " . $_FILES["file"]["name"] . "<br />";
echo "File kind: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
if (file_exists("inputFiles/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " file già esistente. ";
}
else
{
move_uploaded_file($tmp_file, "inputFiles/".$dir."/".$file_name);
print "<br />";
echo "Saved in: " . "inputFiles/$dir/" . $_FILES["file"]["name"];
print "<br />";
}
}
}
else
{
echo "Invalid file";
}
}
Других решений пока нет …