За последние 24 часа нас посетили 18029 программистов и 1640 роботов. Сейчас ищут 1697 программистов ...

Форма загрузки файла на сервер

Тема в разделе "PHP для новичков", создана пользователем CandyHolic, 25 мар 2009.

  1. CandyHolic

    CandyHolic Активный пользователь

    С нами с:
    22 янв 2009
    Сообщения:
    4
    Симпатии:
    0
    Адрес:
    Setagaya, Latvia, NJ
    Здравствуйте.
    Есть примерно следующая форма для загрузки файла:
    HTML:
    1. <form enctype="multipart/form-data" action="<?php echo ($final_path); ?>" method="POST" >
    2. <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo ($max_file_size); ?>">
    3. <input type="file" name="fupload" size="20">
    4. <p>
    5. <br><br>
    6. <input type="submit" value="Upload File">
    7. <br>
    8. </form>
    Если во второй строке value возвращает то что нужно, то action из первой строки просто дописывает в ссылку <?php echo ($final_path); ?> (а ведь должен всего-навсего подставить значение переменной $final_path, где хранится относительный путь к файлу)
    Что я делаю не так? как мне заставить форму отправлять файлы в папку по адресу, задаваемому из переменной $final_path ?
     
  2. heapKiller

    heapKiller Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    value="<?php echo ($max_file_size); ?>" нужно

    <?php
    echo '<input type="hidden" name="MAX_FILE_SIZE" value="'.$max_file_size.'">';
    ?>
     
  3. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Почему?

    CandyHolic
    PHP:
    1.  
    2. <?php
    3. $final_path = '/var/www/elkaz/php-trash/32.php';
    4. $max_file_size = 20000;
    5. ?>
    6.  
    HTML:
    1.  
    2. <form enctype="multipart/form-data" action="<?=$final_path?>" method="POST" >
    3. <input type="hidden" name="MAX_FILE_SIZE" value="<?=$max_file_size?>">
    4. <input type="file" name="fupload" size="20">
    5. <p>
    6. <br><br>
    7. <input type="submit" value="Upload File">
    8. <br>
    9. </form>
    10.  
     
  4. heapKiller

    heapKiller Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Elkaz:
    Потому что это: "<?=$max_file_size?>" - интерпретируется как литерал. Теги <?php (<? - если в настройках разрешен) и ?> нужно вынести ЗА кавычки.
     
  5. Frozen

    Frozen Активный пользователь

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    с каких это пор вдруг?
    Elkaz все верно написал
     
  6. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    heapKiller, тебе когда в следующий раз эту траву предложат заяви: "отрицательный литерал! отрицательный литерал!". ;)

    upd

    а) ты перебил переменную;
    б) чтобы закидывать файл в нужную директорию следует писать
    PHP:
    1. <?php
    2. move_uploaded_file($_FILES['fupload']['tmp_name'], $final_path);
    Атрибут action напрявляет запрос на страницу указаную в action.
     
  7. alexeurodnepr

    alexeurodnepr Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    как по мне лучше проверять размер файла на стороне сервера и указывать там ему размер а не в форме клиента
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Можно и там и там (чтобы при попытке загрузить файл, больший чем можно, клиенту сразу выскочило сообщение об ошибке и ему не пришлось ждать перезагрузки страницы). Однако на стороне сервера проверять надо обязательно, иначе любой желающей сможет свою собственную форму на html сделать, указать ваш скрипт в action и загрузить Вам файл какой вздумается! :)
     
  9. alexeurodnepr

    alexeurodnepr Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    sobachnik

    ну так да)