Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: загрузка файлов на сервер
 
 автор: anderles   (02.02.2009 в 14:17)   письмо автору
 
 

Здраствуйте!
Я скачал Ваш скрипт загрузки файлов на сервер, а он не работает.
у меня рхр не понимает что такое
$_FILES['myfile']['name']

Как настроить рхр, чтобы он понимал этот масив.?

Если делать через $_POST, тоисть:

$_POST[myfile]

то скрипт не хочет копировать файл, так как не знает его местонахождение.
В общем строка:

$_POST[myfile]

передает только имя файла, а должна передавать //путь/имя файла/ на клиентской машине.

Помогите please.
Заранее спасибо.

  Ответить  
 
 автор: Trianon   (02.02.2009 в 14:23)   письмо автору
 
   для: anderles   (02.02.2009 в 14:17)
 

кто такой рхр?

И как настроить, чтоб я понимал, кто это?


касательно $_FILES, имеет смысл вывести весь массив через print_r()
Картина прояснится.

  Ответить  
 
 автор: anderles   (02.02.2009 в 14:29)   письмо автору
 
   для: Trianon   (02.02.2009 в 14:23)
 

Извините рхр - это php

  Ответить  
 
 автор: anderles   (02.02.2009 в 14:38)   письмо автору
 
   для: anderles   (02.02.2009 в 14:29)
 

Ничего не проясняется пишу print_r($FILES['myfile']['name']); или print_r($FILES['myfile']['tmp_name']); и ничего даже не реагирует.

  Ответить  
 
 автор: Trianon   (02.02.2009 в 14:39)   письмо автору
 
   для: anderles   (02.02.2009 в 14:38)
 

я же сказал - весь массив:
print_r($_FILES);

  Ответить  
 
 автор: anderles   (02.02.2009 в 14:41)   письмо автору
 
   для: Trianon   (02.02.2009 в 14:39)
 

И че? виведет Array()

  Ответить  
 
 автор: Trianon   (02.02.2009 в 14:42)   письмо автору
 
   для: anderles   (02.02.2009 в 14:41)
 

ошибки в форме, с которой идет загрузка.

  Ответить  
 
 автор: anderles   (02.02.2009 в 14:45)   письмо автору
 
   для: Trianon   (02.02.2009 в 14:42)
 

По моему там все норм.
Форма:

<form action="index.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"><br> 
      <input type="submit" value="Загрузить"><br>
      </form>

Скрипт в том же файле:

<?php
echo "Результат загрузки файла";
print_r($_FILES); // только что добавлена строка
   
if($_FILES['filename']['size'] > 1024*3*1024)
   {
     echo (
"Размер файла превышает три мегабайта");
     exit;
   }
   if(
move_uploaded_file($_FILES['filename']['tmp_name'], "C://temp/".$_FILES['filename']['name']))
   {
     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(
"Ошибка загрузки файла");
   }
?>

  Ответить  
 
 автор: sim5   (02.02.2009 в 14:56)   письмо автору
 
   для: anderles   (02.02.2009 в 14:45)
 

Это с чего вдруг так:
C://temp/
От куда два слеша в пути? Что у вас за сервер? Какие выдает ошибки? Сдается мне, что у вас не настроен он.

  Ответить  
 
 автор: Trianon   (02.02.2009 в 15:01)   письмо автору
 
   для: sim5   (02.02.2009 в 14:56)
 

Да. Если такое и в php-конфиге стоит, вполне может оказаться причиной.

  Ответить  
 
 автор: Trianon   (02.02.2009 в 14:53)   письмо автору
 
   для: anderles   (02.02.2009 в 14:41)
 

это еще при выводе формы или уже после передачи файла?

  Ответить  
 
 автор: anderles   (02.02.2009 в 19:02)   письмо автору
 
   для: Trianon   (02.02.2009 в 14:53)
 

это при передаче.
А как должно быть???
Я вначале писал C:\temp\.
Да все равно файла то нет.
И как мне вывести имя файла в браузер(имя и путь на клиентской машине)

  Ответить  
 
 автор: Trianon   (02.02.2009 в 19:04)   письмо автору
 
   для: anderles   (02.02.2009 в 19:02)
 

какая версия php стоит?
Должно быть c:/temp

  Ответить  
 
 автор: anderles   (02.02.2009 в 19:10)   письмо автору
 
   для: Trianon   (02.02.2009 в 19:04)
 

Версия 5.2.6
Вот код

if(move_uploaded_file($_FILES['filename']['tmp_name'], "c:/temp".$_FILES['filename']['name']))
   {
     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("Ошибка загрузки файла");
   }

Выдает Ошибка загрузки файла.

  Ответить  
 
 автор: Trianon   (02.02.2009 в 19:14)   письмо автору
 
   для: anderles   (02.02.2009 в 19:10)
 

еще раз .
Начинать следует не с move_uploaded_file
а с проверки $_FILES['filename']['error']
Если там значение отличное от нуля - перемещать файл бессмысленно.

а версия apache какая?

  Ответить  
 
 автор: anderles   (02.02.2009 в 19:24)   письмо автору
 
   для: Trianon   (02.02.2009 в 19:14)
 

Версия Apache 2.2.10

  Ответить  
 
 автор: anderles   (02.02.2009 в 19:12)   письмо автору
 
   для: Trianon   (02.02.2009 в 19:04)
 

Может php не настроен?

register_global выключены

А че там еще может быть не знаю.

  Ответить  
 
 автор: anderles   (02.02.2009 в 19:21)   письмо автору
 
   для: Trianon   (02.02.2009 в 19:04)
 

Хорошо пойдем иным путем.

Подскажите, есть ли какая-то функция которая выводит путь к вибираемому файлу???
То исть форма таже:

<form action="index.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"><br> 
      <input type="submit" value="Загрузить"><br>
      </form>

как я могу узнать Полный путь к файлу, тоисть например: D://путь к/ выбраному файлу/
пхп может мне такое выдать.???

  Ответить  
 
 автор: Trianon   (02.02.2009 в 19:26)   письмо автору
 
   для: anderles   (02.02.2009 в 19:21)
 

Вся информация лежит в массиве $_FILES . Собственно, больше её нет нигде.
Ну в phpinfo() разве что глянуть...
И я сталкивался с ситуацией, когда этот массив не формировался, один единственный раз.
когда запуск скрипта шел на встроенном http-сервере одного из php-редакторов.

  Ответить  
 
 автор: anderles   (02.02.2009 в 19:36)   письмо автору
 
   для: Trianon   (02.02.2009 в 19:26)
 

Ну да мне тоже кажется что на формируется масив $_FILES. и чего теперь делать???
Может где то в php-настройках есть что можно формировать или наоборот.
Дело в том что у меня привязка идет через ZEND Studio. Тоисть Zend Core, и апач их же. Может там где-то в настройках.

Кто нибудь знает где ето может быть???

  Ответить  
 
 автор: anderles   (02.02.2009 в 19:50)   письмо автору
 
   для: Trianon   (02.02.2009 в 19:26)
 

Всем спасибо и особенно Вам Trianon, навели на путь истинный.
Я ду...ак(извините за выражение) поставил в настройках
file_uploads=Off

круто да???:)))
Ваш скрипт рабочий, а то уже грешил.

Большое Спасибо.

  Ответить  
 
 автор: sim5   (03.02.2009 в 02:43)   письмо автору
 
   для: anderles   (02.02.2009 в 19:50)
 

D://путь к/ выбраному файлу/

Не может быть такого! У вас что привычка пагубная, добавлять второй слеш в путях?

  Ответить  
 
 автор: anderles   (02.02.2009 в 14:40)   письмо автору
 
   для: anderles   (02.02.2009 в 14:38)
 

А если написать $_POST['myfile']; то хотя бы виведет имя файла

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования