Помощник
|
type file |
asbury
|
Сообщение
#1
|
||
|
|
||
|
|||
Webmaster_hb |
9.4.2009, 0:58;
Ответить: Webmaster_hb
Сообщение
#2
|
|
файл сам по себе не добавится
html передает этот файл на сервер, где вы должны написать отдельный скрипт. который примет этот файл, обработает и разместить в нужное место на сервере |
|
|
asbury
|
Сообщение
#3
|
|
Ну это я знаю и понимаю, но это как вобще, через экшн? И примеры скриптов - если не трудно ссылку или хотябы как они называются, пожалуйста?:))
предположим у меня лежит сайт и скрипт на сервере "serv1" могу я в скрипте сделать так, чтобы фаил добавлялся на сервер, который не потдерживает пхп?:)) То есть пхп обработчик лежит там где он потдерживается, а вот само действие... |
|
|
Webmaster_hb |
9.4.2009, 10:29;
Ответить: Webmaster_hb
Сообщение
#4
|
|
Ну это я знаю и понимаю, но это как вобще, через экшн? И примеры скриптов - если не трудно ссылку или хотябы как они называются, пожалуйста?:)) Загрузка файлов методом POST PHP способен принимать файл загружаемый при помощи любого браузера, поддерживающего стандарт RFC-1867 (в том числе Netscape Navigator 3 и выше, Microsoft Internet Explorer 3 с патчем от Microsoft или более поздние версии без патча). Это дает возможность загружать как текстовые, так и бинарные файлы. Вместе с PHP-аутентификацией и функциями для работы с файловой системой вы получаете полный контроль над тем, кому разрешено загружать файлы, и над тем, что делать с файлом после его загрузки. Также следует заметить, что PHP поддерживает загрузку файлов методом PUT, который используется в клиентах Netscape Composer и W3C Amaya. Для получения более детальной документации обратитесь к разделу поддержка метода PUT Страница для загрузки файлов может быть реализована при помощи специальной формы, которая выглядит примерно так: Форма для загрузки файлов [php]<form enctype="multipart/form-data" action="_URL_" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> Отправить этот файл: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form>[/php] В приведенном выше примере "_URL_" необходимо заменить ссылкой на PHP-скрипт. Скрытое поле MAX_FILE_SIZE(значение необходимо указывать в байтах) должно предшествовать полю для выбора файла, и его значение является максимально допустимым размером принимаемого файла. Также следует убедиться, что в атрибутах формы вы указали enctype="multipart/form-data", в противном случае загрузка файлов на сервер выполняться не будет. Содержимое массива $_FILES для нашего примера приведено ниже. Обратите внимание, что здесь предполагается использование имени userfile для поля выбора файла, как и в приведенном выше примере. На самом деле имя поля может быть любым. $_FILES['userfile']['name'] Оригинальное имя файла на компьютере клиента. $_FILES['userfile']['type'] Mime-тип файла, в случае, если браузер предоставил такую информацию. Пример: "image/gif". $_FILES['userfile']['size'] Размер в байтах принятого файла. $_FILES['userfile']['tmp_name'] Временное имя, с которым принятый файл был сохранен на сервере. $_FILES['userfile']['error'] Код ошибки, которая может возникнуть при загрузке файла. Ключ ['error'] был добавлен в PHP 4.2.0 Проверка загружаемых на сервер файлов Для получения более детальной информации вы можете ознакомится с описанием функций is_uploaded_file() и move_uploaded_file(). Следующий пример принимает и обрабатывает загруженный при помощи формы файл. [php]<?php // В PHP 4.1.0 и более ранних версиях следует использовать $HTTP_POST_FILES // вместо $_FILES. $uploaddir = '/var/www/uploads/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); print "<pre>"; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { print "File is valid, and was successfully uploaded. "; print "Here's some more debugging info:\n"; print_r($_FILES); } else { print "Possible file upload attack! Here's some debugging info:\n"; print "Possible file upload attack! Дополнительная отладочная информация:\n"; print_r($_FILES); } print "</pre>"; ?>[/php] PHP-скрипт, принимающий загруженный файл, должен реализовывать логику, необходимую для определения дальнейших действий над принятым файлом. Например, вы можете проверить переменную $_FILES['userfile']['size'], чтобы отсечь слишком большие или слишком маленькие файлы. Также вы можете использовать переменную $_FILES['userfile']['type'] для исключения файлов, которые не удовлетворяют критерию касательно типа файла. Начиная с PHP 4.2.0 вы можете использовать $_FILES['userfile']['error'] и разъяснение сообщений об ошибках при реализации вашей логики. Независимо от того, какую модель поведения вы выбрали, вы должны удалить файл из временной папки или переместить его в другую директорию. В случае, если при отправке формы файл выбран не был, PHP установит переменную $_FILES['userfile']['size'] значением 0, а переменную $_FILES['userfile']['tmp_name'] - пустой строкой. none. По окончанию работы скрипта, в случае, если принятый файл не был переименован, или перемещен он будет автоматически удален из временной папки. предположим у меня лежит сайт и скрипт на сервере "serv1" могу я в скрипте сделать так, чтобы фаил добавлялся на сервер, который не потдерживает пхп?:)) То есть пхп обработчик лежит там где он потдерживается, а вот само действие... нет |
|
|
asbury
|
Сообщение
#5
|
|
Спасибо огромное за исчерпывающий ответ!!! Супер!
|
|
|
asbury
|
Сообщение
#6
|
|
|
[PHP]
<?php include('../blocks/admmenu.php'); if (!isset($_POST['submit'])) { echo " <form action='' method='POST' enctype='multipart/form-data' > Меню: <select name='menu'> <option value='1'>Спорт/Туристы</option> <option value='2'>Максискутеры</option> <option value='3'>Mопеды</option> <option value='4'>Эндуро/кросс</option> <option value='5'>Дорожные</option> <option value='6'>Чопперы</option> </select><br /> Производитель: <input type='text' name='podmenu'><br /> Название: <input type='text' name='name'><br /> Объем двигателя: <input type='text' name='obem'><br /> Класс: <input type='text' name='class'><br /> Пробег: <input type='text' name='probeg'><br /> Год: <input type='text' name='god'><br /> Цена: <input type='text' name='cena'> руб.<br /> <input type='hidden' name='MAX_FILE_SIZE' value='30000000' /> Картинка I: <input type='file' name='img1'><br /> Картинка II: <input type='file' name='img2'><br /> Картинка III: <input type='file' name='img3'><br /> Картинка IV: <input type='file' name='img4'><br /> <input type='submit' name='submit' value='Добавить запись'> </form>"; } if (isset($_POST['submit'])) { if (isset($_POST['menu'])){$menu = $_POST['menu']; if ($menu==''){ unset($menu); }} if (isset($_POST['podmenu'])){$podmenu = $_POST['podmenu']; if ($podmenu==''){ unset($podmenu); }} if (isset($_POST['name'])){$name = $_POST['name']; if ($name==''){ unset($name); }} if (isset($_POST['obem'])){$obem = $_POST['obem']; if ($obem==''){ unset($obem); }} if (isset($_POST['class'])){$class = $_POST['class']; if ($class==''){ unset($class); }} if (isset($_POST['probeg'])){$probeg = $_POST['probeg']; if ($probeg==''){ unset($probeg); }} if (isset($_POST['menu'])){$menu = $_POST['god']; if ($god==''){ unset($god); }} if (isset($_POST['cena'])){$cena = $_POST['cena']; if ($cena==''){ unset($cena); }} if (isset($_POST['img1'])){$img1 = $_POST['img1']; if ($img1==''){ unset($img1); }} if (isset($_POST['img2'])){$img2 = $_POST['img2']; if ($img2==''){ unset($img2); }} if (isset($_POST['img3'])){$img3 = $_POST['img3']; if ($img3==''){ unset($img3); }} if (isset($_POST['img4'])){$img4 = $_POST['img4']; if ($img4==''){ unset($img4); }} $uploaddir = 'texnika/'; $uploadfile = $uploaddir . basename($_FILES['img1']['name']); print "<pre>"; if (move_uploaded_file($_FILES['img1']['tmp_name'], $uploadfile)) { print "File is valid, and was successfully uploaded. "; print "Here's some more debugging info:\n"; print_r($_FILES); } else { print "Possible file upload attack! Here's some debugging info:\n"; print "Possible file upload attack! Дополнительная отладочная информация:\n"; print_r($_FILES); } print "</pre>"; } ?> [/PHP] И вот что выводит: Warning: move_uploaded_file(texnika/Acrobat.com.exe): failed to open stream: No such file or directory in w:\home\localhost\www\moto\admin\add1.php on line 53 Warning: move_uploaded_file(): Unable to move '/tmp\phpC4.tmp' to 'texnika/Acrobat.com.exe' in w:\home\localhost\www\moto\admin\add1.php on line 53 Possible file upload attack! Here's some debugging info: Possible file upload attack! Дополнительная отладочная информация: Array ( [img1] => Array ( [name] => Acrobat.com.exe [type] => application/x-msdownload [tmp_name] => /tmp\phpC4.tmp [error] => 0 [size] => 95232 ) [img2] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) [img3] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) [img4] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
автоматическая активация нужных <input type="radio"> | 1 | FALKOR | 3676 | 19.5.2016, 17:18 автор: -Valeron- |
|
Продаю сайт Top-file.ru | 28 | Staff92 | 8237 | 24.2.2010, 16:46 автор: Monah |
|
Новый File Share сервис! 20$ за 1000 загрузок! | 95 | БаSтеR | 20535 | 28.1.2009, 19:27 автор: edder |
Текстовая версия | Сейчас: 26.4.2024, 6:35 |