За последние 24 часа нас посетили 19396 программистов и 1604 робота. Сейчас ищут 940 программистов ...

Как сохранить массив $_FILES в сессию

Тема в разделе "PHP для новичков", создана пользователем Olga-Li, 24 янв 2014.

  1. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    Всем привет!
    Нужна ваша подсказка.
    Задача:
    1) С помощью загрузчика одновременно пользователь загружает несколько файлов.
    2) В браузере отображаются файлы,которые он загрузил.(на странице index.php)
    3) Рядом с каждым из файлов кот. он загрузил отображается ссылка "открыть"
    4) При клике по ссылке открывается файл к которому относится эта ссылка ,(файл открывается в окне плагина "fancyupload")
    например
    ЗАГРУЖЕННЫЕ ФАЙЛЫ:
    1) азалия.txt 'открыть'
    2) бегония.txt 'открыть'
    3) роза.txt 'открыть'
    4) гибискус.txt открыть''

    Проблема в том, что открывается только тот файл,который был загружен последним,неважно по какой ссылке жмем.
    Делаю так:
    1) название файла сохраняю в сессию
    session_start();
    $_SESSION['sa']=$_FILES['Filedata']['name'];
    $search= $_FILES['Filedata']['name'];

    $search_1= $_FILES['Filedata']['tmp_name'];

    move_uploaded_file($search_1,"tmp/".$search);
    die( $search . ' '.'<a id="var" href="edit.php">открыть</a>'.'</div>');




    2) А в файле обработчике obrabothik.php уже открываю файл кот. был загружен.
    session_start();
    $sa=$_SESSION['sa'];

    $files=$_SESSION['files'];

    $fp = fopen('tmp/'.$sa, "r");

    if ($fp)
    {
    while (!feof($fp))
    {
    $mytext = fgets($fp, 999);
    echo $mytext."<br />";
    }
    }
    else echo "Ошибка при открытии файла";
    fclose($fp);

    Но в сессию сохраняется только тот файл,который был загружен последний.
    Как в сессию сохранить название всех загруженных файлов и открывать их?
    Или можно другой вариант использовать?

    Добавлено спустя 1 минуту 56 секунд:
    Ошиблась плагин fancybox ,а не "fancyupload"
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ваш уровень знаний по пхп предполагает, что вы понимаете вопрос?
     
  3. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    приведите пожалуйста пример ,как сформировать массив из названия файлов,кот. загрузили с помощью $_FILES.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Вы это серьёзно?
    Код (PHP):
    1. $_SESSION['files'] = $_FILES; 
    С вас десять баксов, без меня вы эту проблему не решили бы.
     
  5. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    НЕТ! НЕ ТО!
    В этом примере передается весь $_FILES со всеми его значениями.И вы сохранили его в сессию.
    Мне нужно немного другое.
    Нужно пройтись циклом по $_FILES с этим проблем нет,а затем сформировать массив только из НАЗВАНИЙ загруженных файлов и сохранить в сессию.
    У меня получается в массив сохранить название файла,кот.был загружен последним.

    Добавлено спустя 13 минут 45 секунд:
    А в этом вопросе вы мне не сможете помочь?
    Или отвечаете только на те цена которым десять баксов?!
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а не всё ли вам равно, что там пара лишних значений? ну ок, пройдитесь по нему циклом. в чем затык?
     
  7. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    Цель которую я хочу добиться в первом вопросе прочтите,если не затруднит.
    Хочу сформировать массив названий файлов кот.загрузились,сохранить их в сессию,чтобы можно было открыть каждый файл.
    Пока открывается только тот,который был загружен последним.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык я вроде русскамана языкохам спрашиваю. В чем затык? =)

    Если не ответите, перенесу тему в бесплатную помощь, будете там ждать вашего рыцаря.
     
  9. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    Не открываются файлы для чтения
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    почистите каталог загрузки перед опытом.
    загрузите, например, 3 файла.
    проверьте доступным вам способом загрузились ли файлы на сервер.
    скриншот бросьте сюда пожалуйста - как выглядит страница со ссылками на загруженные файлы. плюс сами ссылки.
     
  11. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    [​IMG]

    Добавлено спустя 1 минуту 8 секунд:
    [​IMG]

    Добавлено спустя 3 минуты 51 секунду:
    https://www.dropbox.com/s/hs8c0ak7disyurk/%D0%B7%D0%B0%D0%B ... %D0%B2.png

    Добавлено спустя 3 минуты 1 секунду:
    скриншот не получился скинула ссылку на него.
    задавайте вопросы,распишу подробней,очень надеюсь на вашу помощь
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Задаю вопрос. Что это означает?
     
  13. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    igordata, я давно заметила,что вы всегда спрашиваете ЧТО? ГДЕ? КОГДА? ПОЧЕМУ и КАК ? Но по существу никогда не отвечаете и не пытаетесь вникнуть в суть вопроса и помочь людям,которые к вам обращаются за помощью. Я например только учусь программировать и таким как я порой сложно сформировать вопрос касающийся программирования, а вы нет чтобы выяснить суть ,только еще больше путаете.
    Прошу прощения,если обидела!
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а я блин как должен? телепатией вникать? отвечайте на вопрос. =)

    Добавлено спустя 1 минуту 31 секунду:
    предложите ваш магический способ выяснять суть без вопросов.
     
  15. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    Вопросы надо задавать по существу ,а не так
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Всего хорошего.
     
  17. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    картинка не видна и не доступна по ссылке. я просто хотел диагностировать проблему точнее, чем "не работает".
     
  18. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    И вам того же желаю!!!

    Добавлено спустя 44 секунды:
    [​IMG]

    Добавлено спустя 4 минуты 55 секунд:
    artoodetoo,проблема состоит в том,что я не могу связать загруженный файл со ссылкой

    Добавлено спустя 3 минуты 48 секунд:
    когда загружаю файлы,если проверить $_FILES ,то в массив сохраняются название всех загруженных файлов,но при клике по ссылке открывается файл, который был загружен последним,не важно по какой из ссылок кликнуть
     
  19. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    У меня получается.
    Olga-Li, может, код покажете? Только урезанную версию, если можно.


    А файлы то сами загружаются, оказываются в папке tmp?

    И ещё покажите, что в массиве $_FILES на момент загрузки:
    Код (PHP):
    1. if(isset($_FILES)){
    2.     var_dump($_FILES);
    3. } 
    А то вот эта строка выглядит подозрительно
    Код (PHP):
    1. $_SESSION['sa']=$_FILES['Filedata']['name'];
    , т.к. при мультизагрузке ['name'] является массивом. Соответственно обращаться нужно, как с массивом.
     
  20. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    С узкими глазами, наверно херово понимать php =)
     
  21. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    YSandro,да файлы загружаются в папку.
    [​IMG]

    Добавлено спустя 49 минут 45 секунд:
    $filenames =''; //Массив имен загруженных файлов
    foreach ($_FILES as $file) {
    $filename = $file['name'];// Получаем имя файла
    $filenames[] = $filename; // Заносим в массив
    }
    var_dump($filenames); // Вывод массива

    Как правильно сохранить массив имен загруженных файлов в $filenames,может тогда решится вопрос.
     
  22. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А проверяли? В коде я что то не вижу что бы был выбор открыть тот или другой файл.

    Был сохранен не массив.

    Правильно. Не работает?
     
  23. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    1)$_SESSION['sa']=$_FILES['Filedata']['name'];если так сохранить то массив передается

    2)
    Второй вариант не передает значение сессии
    $_SESSION['sa']=$filenames;

    нет не проверяла

    Добавлено спустя 2 минуты 20 секунд:
    не работает
     
  24. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Вообще то да.Ну да ладно.
    Код какой то странный.
    Давай уточним задачу.
    Нужно загрузить несколько файлов сразу.На другой странице вывести названия файлов с ссылкой при нажатии на ссылку отобразить содержание файла.
    Все верно?
     
  25. Olga-Li

    Olga-Li Новичок

    С нами с:
    26 сен 2013
    Сообщения:
    65
    Симпатии:
    0
    Совершенно верно!