|
|
|
| Все привет, не подскажите как с этой функцией можно создавать новые директории и в них закидывать файлы?
Пока что получается просто создавать папки с теми названиями, что вводит человек из формы:
<form action="" method="get">
Имя папки: <input name="name" type="text"><br>
<input name="" type="submit" value="отправить">
</form>
<?php
if(isset($_GET['name'])) {$name = $_GET['name'];} if (empty($name)) {exit();}
$a = mkdir("$name".time(), 0777);
if($a) {echo "Директория создалась";} else {echo "ошибка";}
?>
|
но создавать просто так папки не интересно, по этому попробовал туда еще вкладывать файл из формы:
<form method="post" enctype="multipart/form-data">
<p><input name="file" size="18" type="file" value=""></p>
<p>Имя папки: <input name="name" type="text"></p>
<p><input name="submit" type="submit" value="Загрузить"></p>
</form>
<br>
<?php
if(empty($_POST['name'])) {exit("Поле name не заполнено!");}
if(isset($_POST['name'])) {$name = $_POST['name'];}
$file = $_FILES['file']['tmp_name'];
$filename = $_FILES['file']['name'];
if(!empty($file))
{
ini_set('memory_limit', '32M');
$maxsize = "100000000";
$extentions = array( "gif","txt","tpl","jpg","jpeg","png","zip", "rar","7z","tif","psd","swf","flv","avi","mpeg","mp4","mp3","wav", "ogg","ogm","doc","xls","ppt");
$size = filesize ($_FILES['file']['tmp_name']);
$type = strtolower(substr($filename, 1+strrpos($filename,".")));
$new_name = 'file-'.time().'.'.$type;
if($size > $maxsize)
{
echo "Файл больше 100 мб. Уменьшите размер вашего файла или загрузите другой. <br><a href='' onClick=window.close();>Закрыть окно</a>";
}
elseif(!in_array($type,$extentions))
{
echo ' <b>Файл имеет недопустимое расширение</b>. Допустимыми являются форматы изображений, видеофайлов, флэш-роликов и текстовых документов. <br>';
}
else
{
/*Создаем папку*/
$folder = mkdir($name, 0777);
if (copy($file, $folder.'/'.$new_name))
{echo "Файл загружен!";}
else {echo "Файл НЕ был загружен.";}
}
}
?>
|
а в этом скрипте папка создается, а файл пытается записаться по адресу "Warning: copy(1/file-1323679126.jpg)", ищет папку с названием "1". Почему так происходит? Буду благодарен, если скажите ошибки :) | |
|
|
|
|
|
|
|
для: ladan
(12.12.2011 в 11:50)
| | 1. в mkdir чмод 777 можно не указывать. Это и так значение по умолчанию. Но это не ошибка.
2. мкдир не возвращает имя дирректории, а возвращает информацию о том была ли попытка создать дирректорию удачной, т.е. bool (true либо false). А т.к. (string)true == "1", то вы в итоге получаете 1/file-1323679126.jpg. Нужно так:
<?
/*Создаем папку*/
if (!mkdir($name)){
die ("ошибка создания папки");
}
if (copy($file, $name.'/'.$new_name))
{echo "Файл загружен!";}
else
{echo "Файл НЕ был загружен.";}
}
?>
|
| |
|
|
|
|
|
|
|
для: Sfinks
(12.12.2011 в 14:46)
| | Спасибо! все заработало :) Просто привык присваивать переменным только одни значения :) | |
|
|
|