|
|
|
|
<?
//Тип файлов
$type1 = "application/x-gtar"; //gtar
$type2 = "application/x-tar"; //rar
$type3 = "application/zip"; //zip
$type4 = "application/x-zip-compressed"; //zip
$type5 = "application/x-gzip"; //Архив ZIP (PKZIP)
if (($file == $type1) or ($file == $type2) or ($file == $type3))
{
$host = "IP";
$user = "login";
$pass = "pass";
$directory = "test.rar";
$conn = ftp_connect("$host");
if (!$conn)
{
echo 'Ошибка: соединение с FTP-сервером невозможно<br />';
exit;
}
echo "Установлено соединение с $host<br />";
// Регистрация на хосте
@ $result = ftp_login($conn, $user, $pass);
if (!$result)
{
echo "Ошибка: пользователь $user не зарегистрирован<br>";
ftp_quit($conn);
exit;
}
#ftp_mkdir($conn, $directory);
#ftp_chdir($conn, $directory);
$upload = ftp_put($conn, $directory, $file, FTP_BINARY);
if (!$upload)
{
echo "Ошибка: файл не cоздан<br>";
ftp_quit($conn);
exit;
}
else
{
echo "файл $directory cоздан удачно";
}
}
else
{
echo "Файл $file не подходит по формату<br>";
}
?>
|
Проблема в том что не могу коректно составить правило для формата Upload пытаюсь зделать разрешение на zip rar по MIME tape на остальное блок/ подскажите в чем ошибка ? | |
|
|
|
|
|
|
|
для: sidPR
(20.08.2005 в 10:36)
| | А что содержится в переменной $file? | |
|
|
|
|
|
|
|
для: cheops
(20.08.2005 в 12:55)
| | в переменно файл содержаться исходные данные из формы
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
Загрузить файл: <input name="file" type="file">
<input type="submit" value="Послать файл">
</form>
|
а код upload.php приведен выше | |
|
|
|
|
|
|
|
для: sidPR
(20.08.2005 в 13:14)
| | А нет так не пойдёт, следует воспользоваться суперглобальным массивом $_FILES
<?php
if (($_FILES['file']['type'] == $type1) or ($_FILES['file']['type'] == $type2) or ($_FILES['file']['type'] == $type3))
{
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(20.08.2005 в 13:42)
| | почемуто при вставке файла rar пишет ошибку - Файл $file не подходит по формату.
а при вставке к примеру mp3 формата. тоже самое чтото видимо неправильно в синтаксе ? :\ | |
|
|
|
|
|
|
|
для: sidPR
(20.08.2005 в 14:08)
| | А вы просто распечатайте содержимое массива $_FILES и посмотрите какой тип у него идёт
<?php
echo "<pre>";
print_r($_FILES);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(20.08.2005 в 14:24)
| | Отлично понял свою ошибку спасибо огромное за помощь но тут еще небольшой нюанс при оплоуде можно ли щадать свою временную папку и сразу же изменение имени файл на нужное имя?
Заранее огромная благодарность! | |
|
|
|
|
|
|
|
для: sidPR
(20.08.2005 в 22:11)
| | Нет, механизм загрузки идёт через временную директорию - следует копировать файлы от туда и не забывать уничтожать временный файл. | |
|
|
|
|
|
|
|
для: cheops
(20.08.2005 в 23:08)
| | нет я в смысле идет загрузка файла в темп а из темп ужэ в окончательную диру вот на этом этапе изменять имя файла . | |
|
|
|
|
|
|
|
для: sidPR
(20.08.2005 в 23:34)
| | Да, это является общепринятой практикой, обычно это осуществляют в момент копирования при помощи функции copy()
<?php
if (copy($_FILES['attach']['tmp_name'], $_FILES['attach']['name']))
{
// ...
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(21.08.2005 в 00:34)
| | в моем случае будет правильным так я правильно понимаю?
<?php
if (copy($_FILES['file']['tmp_name'], $_FILES['file']['нове имя файла']))
{
// ...
}
?>
|
заранее спасибо огромное за ваш труд | |
|
|
|
|
|
|
|
для: sidPR
(21.08.2005 в 00:47)
| | как мне в функции $directory оставлять то расширение какое было при загрузке чет непойму подскажите дураку... заранее спасибо | |
|
|
|
|
|
|
|
для: sidPR
(21.08.2005 в 03:53)
| | вопрос снят я зделал так
<?
$auto = "audi TT";
//Тип файлов
$type1 = "application/x-gtar"; //gtar
$type2 = "application/x-tar"; //rar
$type3 = "application/zip"; //zip
$type4 = "application/x-zip-compressed"; //zip
$type5 = "application/octet-stream"; //Архив ZIP (PKZIP)
if (($_FILES['file']['type'] == $type1) or ($_FILES['file']['type'] == $type2) or ($_FILES['file']['type'] == $type3) or ($_FILES['file']['type'] == $type4) or ($_FILES['file']['type'] == $type5))
{
$name = $_FILES["file"]["name"];
$host = "ip";
$user = "log";
$pass = "pass";
#$directory = "";
$conn = ftp_connect("$host");
if (!$conn)
{
echo 'Ошибка: соединение с FTP-сервером невозможно<br />';
exit;
}
echo "Установлено соединение с $host<br />";
// Регистрация на хосте
@ $result = ftp_login($conn, $user, $pass);
if (!$result)
{
echo "Ошибка: пользователь $user не зарегистрирован<br>";
ftp_quit($conn);
exit;
}
#ftp_mkdir($conn, $directory);
#ftp_chdir($conn, $directory);
$upload = ftp_put($conn, $name, $file, FTP_BINARY);
if (!$upload)
{
echo "Ошибка: файл не cоздан<br>";
ftp_quit($conn);
exit;
}
else
{
echo "архив $name cоздан удачно и загружен на $host";
}
}
else
{
echo "Файл $file не архив<br>";
}
?>
|
вопрос только вот в чем все создаеться все конектиться но на этапе
$name = $_FILES["file"]["name"];
|
непойму как зделать переиминовку файла из tmp думаеться так
copy($_FILES['file']['tmp_name'], $_FILES['file']['newname']);
$name = $_FILES["file"]["name"];
|
но чтото видимо нетак посаветуйте :( | |
|
|
|
|
|
|
|
для: sidPR
(21.08.2005 в 04:45)
| | Если вы хотите переименовать имя полностью, а не взять то, которое присылает пользователь, то следует писать
<?php
$newname = "Новое имя файла.txt";
copy($_FILES['file']['tmp_name'], $newname);
$name = $newname;
?>
|
Если необходимо файлу присвоить имя, назначенное пользователем, то код должен выглядеть следующим образом
<?php
copy($_FILES['file']['tmp_name'], $_FILES['file']['newname']);
$name = $_FILES['file']['newname'];
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(21.08.2005 в 12:18)
| | а всетаки как для моуго случая зделать чтобы переиминовывался входной файл
и на выходе на ftp диру менял имя не меняяя расширения а то получаеться и в темпах чтобы неостался помагите пожалуйста | |
|
|
|
|
|
|
|
для: sidPR
(21.08.2005 в 18:37)
| | я зделал таким образом:
<?
$ext = strrchr($_FILES['file']['name'], ".");
$newname = "test$ext";
copy($_FILES['file']['tmp_name'], $newname);
$name = $newname;
?>
|
Но tmp файл сохраняеться как в папке где находиться скрипт так и в папке куда ему указанно созраняться.
Вопрос - Как избежать этого. и есть ли вариант проще ? | |
|
|
|
|
|
|
|
для: sidPR
(22.08.2005 в 00:08)
| | Хм.. что-то не очень понятно, данный скрипт должен загружать файлы в текущую папку... если требуется явно указать путь - следует исправить значение переменной $newname
<?php
$newname = "files/test$ext";
?>
|
Правильно ли я понял, одна функция copy() делает две копии? | |
|
|
|
|
|
|
|
для: cheops
(22.08.2005 в 01:29)
| | Нет у меня из админ панели идет аплоуд файла название FILE конектиться к фтп и создает прямо в корне ftp сервера файт вот при создании точнее перед я хочю его переиминовать но все попытки неудаються нормально это зделать!
вот на этом этапе все происходит :
$upload = ftp_put($conn, $directory, $file, FTP_BINARY);
if (!$upload)
|
$directory а точнее ужэ $name после наших попыток изменить имя | |
|
|
|
|
|
|
|
для: sidPR
(22.08.2005 в 01:32)
| | не ужели никто не вкурсе как это зделать? | |
|
|
|
|
|
|
|
для: sidPR
(22.08.2005 в 14:41)
| | Скорее никто не понял что требуется... Может вы приведёте пример, того какой файл загружается, какие преобразования происходят с его именем и местоположением по пунктам. | |
|
|
|
|
|
|
|
для: cheops
(22.08.2005 в 20:37)
| | cм. вложение .
Все работает имя и расширение присваиваеться какое я задал но непонятно
1. Создает файл там где находиться сам скрипт что мне очень непонятно!
2. Создает файл на фтп сервер так и должно быть и нигде более.
3. Посоветуйте может можно както модифицировать изменение имени на лету? | |
|
|
|
|
|
|
|
для: sidPR
(23.08.2005 в 00:17)
| | Всё правильно файл помещается в директории, где расположен сам скрипт благодаря строке
<?php
$newname = "test$ext";
?>
|
Если вы хотите изменить путь, например поместить файл в директорию files, следует изменить данную строку на
<?php
$newname = "files/test$ext";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 00:42)
| | а мне его ненадо некуда помещять!!! кроме как на фтп а если вы говорите
<?php
$newname = "files/test$ext";
?>
|
то как организовать помещение на фтп хотя ниже он соединяеться и запись делает | |
|
|
|
|
|
|
|
для: sidPR
(23.08.2005 в 01:12)
| | А вас смущает, что около скрипта остаётся копия файла? Тогда после функции ftp_put() просто удалите его при помощи функции unlink
| |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 01:37)
| | все я зделал обошелся двумя строками !
:)
$ext = strrchr($_FILES['file']['name'], ".");
$name = "новое имя ";
$upload = ftp_put($conn, $name.$ext, $file, FTP_BINARY);
if (!$upload)
|
а я мудрил сам исправился :)) спасибо за поддержку! :) | |
|
|
|