|
|
|
| Как загрузить файл и при этом зразу же поместить его в созданный по ходу загрузки каталог? 2 часа уже промучался, а всё таже ошибка: Warning: copy() failed to open stream
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="text" name="title"/><br/>
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
|
Файл upload.php
<?php
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
$file_path = "../books/".$_POST['title']."/";
mkdir($file_path, 0700);
if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
{
echo "File is uploaded";
if(copy($_FILES["filename"]["tmp_name"],$file_path))
{
if(copy($_FILES["filename"]["tmp_name"],$file_path))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($_FILES["filename"]["tmp_name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
}
}else{
echo("Ошибка при копировании файла!");
}
}
else {
echo("Ошибка загрузки файла");
}
?>
|
| |
|
|
|
|
|
|
|
для: x777
(31.10.2008 в 19:35)
| | в пару к is_uploaded_file есть move_uploaded_file | |
|
|
|
|
|
|
|
для: Волки
(31.10.2008 в 20:24)
| | Так тоже не работает. Пробовал. :( | |
|
|
|
|
|
|
|
для: x777
(31.10.2008 в 19:35)
| |
<html>
<head>
<title>Загрузка файла</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="text" name="title" /><br/>
<input type="file" name="filename" /><br>
<input type="submit" value="Загрузить" /><br>
</form>
</body>
</html>
|
Вариант раз:
<?php
if($_FILES['filename']['size'] > 1024*3*1024)
{
echo ('Размер файла превышает три мегабайта');
exit;
}
$file_path = '../books/'.$_POST['title'].'/';
mkdir($file_path, 0700);
if(is_uploaded_file($_FILES['filename']['tmp_name']))
{
if(copy($_FILES['filename']['tmp_name'],$file_path.$_FILES['filename']['name']))
{
echo('Файл успешно загружен.<br>');
echo('Характеристики файла: <br>');
echo('Имя файла: ');
echo($_FILES['filename']['name']);
echo('<br>Размер файла: ');
echo($_FILES['filename']['size']);
echo('<br>Каталог для загрузки: ');
echo($file_path);
echo('<br>Тип файла: ');
echo($_FILES['filename']['type']);
}
else
{
echo('Ошибка при копировании файла!');
}
}
?>
|
Вариант два:
<?php
if($_FILES['filename']['size'] > 1024*3*1024)
{
echo ('Размер файла превышает три мегабайта');
exit;
}
$file_path = '../books/'.$_POST['title'].'/';
mkdir($file_path, 0700);
if(is_uploaded_file($_FILES['filename']['tmp_name']))
{
if(move_uploaded_file($_FILES['filename']['tmp_name'],$file_path.$_FILES['filename']['name']))
{
echo('Файл успешно загружен.<br>');
echo('Характеристики файла: <br>');
echo('Имя файла: ');
echo($_FILES['filename']['name']);
echo('<br>Размер файла: ');
echo($_FILES['filename']['size']);
echo('<br>Каталог для загрузки: ');
echo($file_path);
echo('<br>Тип файла: ');
echo($_FILES['filename']['type']);
}
else
{
echo('Ошибка при копировании файла!');
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Zend72
(01.11.2008 в 02:59)
| | Вариантом 1 лучше не пользоваться. | |
|
|
|
|
|
|
|
для: sim5
(01.11.2008 в 06:06)
| | Не работает не один ни второй вариант! Ошибка таже:
Warning: copy(../books/asdfasfas/) [function.copy]: failed to open stream: No such file or directory in E:\PROJECT\Dreams=e-books\president\upload.php on line 29
Ошибка при копировании файла!
Может это из-за прав доступа? Хотя при прямом копировании, когда папка уже создана, это работает. Но когда она автоматом создаеться, папка создана, а файла там нет. :( | |
|
|
|
|
|
|
|
для: x777
(01.11.2008 в 14:08)
| | Выставляйте права 777 | |
|
|
|
|
|
|
|
для: x777
(01.11.2008 в 14:08)
| |
unmask("0");
mkdir($file_path, 0777);
|
| |
|
|
|
|
|
|
|
для: Assessor
(01.11.2008 в 14:20)
| | Права не помогают. Сервер Apache 2.2.8/php 5.2.5 на Windows XP (локальный)
Папка создается без проблем. Уже сотни создалось :) Но файл в эту папку не копируеться. | |
|
|
|
|
|
|
|
для: x777
(01.11.2008 в 14:30)
| | попробуйте $file_path присвоить полный путь...
$file_path = $_SERVER['DOCUMENT_ROOT'] . '/books/';
|
| |
|
|
|
|
|
|
|
для: Assessor
(01.11.2008 в 14:41)
| | Zend72, огромное спасибо!!! Твой второй вариант помог! проблема была в:
if(copy($_FILES['filename']['tmp_name'],$file_path.$_FILES['filename']['name']))
|
а у меня было просто
if(copy($_FILES['filename']['tmp_name'],$file_path))
|
Всем, спасибо за то что пыталисть помочь! Ваш форум супер! | |
|
|
|
|
|
|
|
для: x777
(01.11.2008 в 14:53)
| | Это как раз не супер. Не используйте copy() при загрузке файлов на сервер. | |
|
|
|
|
|
|
|
для: sim5
(01.11.2008 в 15:00)
| | Я в курсе! Я у себя использую move_uploaded_file() Спасибо! | |
|
|
|
|
|
|
|
для: x777
(01.11.2008 в 14:53)
| |
if(move_uploaded_file($_FILES['filename']['tmp_name'],$file_path)) - ОШИБКА!
if(move_uploaded_file($_FILES['filename']['tmp_name'],$file_path.$_FILES['filename']['name'])) - РЕШЕНИЕ!
|
| |
|
|
|
|
|
|
|
для: x777
(01.11.2008 в 15:10)
| | А дубликатов имен не опасаетесь? | |
|
|
|
|
|
|
|
для: sim5
(01.11.2008 в 17:53)
| | Что вы имеете ввиду? | |
|
|
|
|
|
|
|
для: x777
(03.11.2008 в 10:45)
| | Если это загрузка файлов от пользователя, то где гарантия, что файла с именем, например, "Летом на даче", не будет 2, 3... | |
|
|
|
|
|
|
|
для: sim5
(03.11.2008 в 11:23)
| | Нет, это для админки. Спасибо. | |
|
|
|