За последние 24 часа нас посетили 57808 программистов и 7256 роботов. Сейчас ищут 2145 программистов ...

Копирование файлов с сервера на клиентскую машину и обратно

Тема в разделе "PHP для новичков", создана пользователем tlg25, 14 сен 2016.

  1. tlg25

    tlg25 Новичок

    С нами с:
    13 сен 2016
    Сообщения:
    11
    Симпатии:
    0
    Здравствуйте.
    Всего несколько дней работаю с PHP, раньше никогда web-программированием не занималась.
    Но подключили к проекту на работе. Гуглила, не могу разобраться вроде с простым вопросом:
    Необходимо копировать файлы с сервера на клиентскую машину(ту, на которой пользователь зашёл на наш сайт) сайт и обратно. При этом при копировании файлов с клиентской машины в папки на сервере необходимо, чтобы пользователь не выбирал отдельно каждый файл (Пример, когда пользователь выбирает один файл в окне диалога, а потом он загружается на сервер в проекте есть).
    а нужно чтобы пользователь выбрал один файл - в моём случае это xml-файл, который я формирую в своём не web-приложении, я буду считывать из его тегов список файлов, которые нужно скопировать на сервер и дальше мне их надо туда скопировать без каких-либо действий-подтверждений со стороны пользователя.
    Не могу разобраться как скопировать файлы (пути к которым мне известны) с локального компьютера на сервер. (С помощью php).
    В случае с копированием с сервера на клиентскую машину, я могу сделать скачивание файлов по одному, при этом пользователю выскакивает стандартное окно с предложением сохранить или открыть файл. Но мне так не годится. Пользователь должен максимум 1 раз выбрать каталог, куда будут скачиваться все файлы
    (в может и вообще не выбирать, если он будет прописан в настройках "по умолчанию")
    и дальше все файлы (какие я как разработчик знаю, информация об этом хранится в таблицах в базе) должны автоматически скопироваться(загрузиться)
    в эту папку, без каких-либо действий со стороны пользователя. Он только один раз нажимает кнопку типа "Получить файлы".
    Вот с этим не могу разобраться.
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    Wunderbar!
     
  3. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    Ну такая задача к обычному вэбу отношения не имеет. В обычно вебе браузер клиента посылает запрос и получает от сервера ответ. Если это файл с нужными заголовками - появляется стандартное окно для сохранения файла на локальную машину.

    Для решения задачи придется использовать средства, значительно выходящие за профиль данного форума. Например писать на джаве плагин или даже веб-браузер-файлокачалку целиком.
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    Называется "скачать файл". Решается ссылкой на файлы, или на архив с файлами, создаваемый на лету. Отдаётся любым сервером.
    называется "загрузить файл". Есть <input type="file" который этот вопрос решает. Поддерживается любым браузером.

    Это обязательные минимальные знания. Даже если они вам не пригодятся - знайте их на всякий случай.

    если ваше приложение запущено на машине юзера, то браузер вам не требуется вовлекать. Вам нужно отправить все файлы из своего приложения. Это просто. Веб-сервер сможет их принять так, как если бы их загрузил человек. Ему всё равно.

    ваше приложение должно само скачивать и раскладывать файлики.

    какой язык программирования вы предпочитаете? загуглите его и http
     
  5. tlg25

    tlg25 Новичок

    С нами с:
    13 сен 2016
    Сообщения:
    11
    Симпатии:
    0
    Первое я как раз без проблем могу сделать, но мне надо, чтобы не было стандартного окна.
    То есть писать надо куски кода на javascript или jquery? Я-то поняла, что работой с файлами php занимается...
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    что за приложение? кто писал? на каком языке?
     
  7. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    нет, джаваскрипт это язык, который выполняется на страницах. Типа стандартного языка для интерактивности клиентской части. А я говорил про джаву. Джава не равно джаваскрипт. Джейквейри - библиотека написанная на джаваскрипте. Она просто реализует некоторые стандартные вещи удобным кроссбраузерным кодом.

    пхп это язык программирования, ориентированный на динамическую генерацию содержимого. Он выполняется на веб-сервере и может с такой же радостью быть заменен на многие языки, которые умеют обработку запросов по протоколу передачи гипертекста. Некоторый умеют общаться через веб-сервер, а некоторые позволяют реализовать и собственные хттп-сервисы. В общем ты не правильно поняла.
     
  8. tlg25

    tlg25 Новичок

    С нами с:
    13 сен 2016
    Сообщения:
    11
    Симпатии:
    0
    Одно моё на Delphi (я не единственный разработчик, но на данный момент основной), второе web-приложение написанное единственным в компании web-программистом. К работе с которым я сейчас подключаюсь. Там php, jquery. Базы данных MSSQL
    --- Добавлено ---
    Спасибо, знания всегда пригодятся. Мое приложение на машине у пользователя может не стоять. Реализую xml-обмен в определённом формате, у меня в приложении есть кнопки и процедуры выгрузки и загрузки. В программе есть присоединённые файлы, которые в базе не храним, храним только информацию о путях. Реализован уже обмен между разными базами локальными базами. Теперь хотят сделать обмен данных между моим приложением и новым проектом web-приложением. Там пользователь заходит под своим логином и паролем, есть фильтры, он может установить, например, за какой диапазон дат он хочет выгрузить ту или иную информацию и сответсвенно те или иные присоединённые файлы. Есть один обходной вариант: сохранять содержимое всех файлов и записывать строками в xml-теги, я дельфи я так делаю с небольшим файлами аналогами юзерпиков. Но если все присоединённые файлы в таком виде запихивтаь в 1 xml-файл, а они и большие могут быть, то он разрастётся до очень больших размеров, не уверена, что это хорошо. Хотя тогда его один как раз можно скачать со стандартным оконом диалога скачивания файлов(это я уже делала), и будет всё как хотет пользователь. Но не знаю, не будет ли каких-либо подстав с огромным xml-файлом.
    --- Добавлено ---
    Да, я перепутала джаву и джава-скрипт - поняла. С чистой джавой не работала совсем никогда.
     
  9. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    ну я на нее намекнул только в рамках того, что у некоторых браузеров еще разрешено исполнение джава-апплетов. А вообще это типа дырявая технология и её старательно выпиливают всякие там гуглы.
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    тогда ваша задача не имеет решения
    --- Добавлено ---
    а что за файлы и почему человек хочет грузить их из разных мест?
     
  11. tlg25

    tlg25 Новичок

    С нами с:
    13 сен 2016
    Сообщения:
    11
    Симпатии:
    0
    У нас есть линейка приложений (первые начали разрабатываться 10 лет назад, остальные позже). Частично отличаются по функционалу, частично совпадают. Два приложения на Delphi (с базами MSSQL и ACCESS) ещё два клона(копии) этих приложений написаны на 1С, для тех, кто предпочитает пользоваться 1С. Большая часть данных хранится в базах, но вот всякие присоединённые файлы(это могут быть фотографии, документы word, да любые файлы, которые пользователь захочет) в приложениях с MSSQL и ACCESS хранятся не в базе, а в определённых папках на компьютере у пользователя (в ACESS версии), и на том компьютере, где стоит MSSQL SERVER (в MSSQL версии). Между всеми приложениями давно написан обмен. Основные данные и пути к файлам передаются в xml-формате, файлы просто копируются в соответствующие папки в случае ACESS-MSSQL и пути к в базе прописываются или загружаются в саму базу в случае 1C, но при выгрузке из 1С тоже на выходе xml-файл, где основные данные и пути к файлам и папки с присоединёнными файлами.

    Сейчас компания взяла курс на web. Разрабатывается web-приложение. База mssql server, клиент php, jquery. Приложение той же линейки, по функционалу и данным во многом совпадает. И также там хранятся присоединённые файлы, не в базе, а в определённых папках на сервере. А в базе только пути к ним. Встал вопрос обмена. Что бы те, кто уже пользуется нашими старыми программами могли переносить свои данные в web-приложение, или, если захотят пользоваться и старым и новым вариантом, не вводить данные в два места, а иметь возможность гонять данные туда-сюда.
     
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Так решить, как хотите вы, увы не получится. Вам нужно что-то вроде своего облачного хранилища делать. Если бы любой сайт мог хранить на любом компе любые файлы, или читать любые файлы с любого компа, наступил бы апокалипсис.
     
  13. tlg25

    tlg25 Новичок

    С нами с:
    13 сен 2016
    Сообщения:
    11
    Симпатии:
    0
    Да, мне уже сказали, что эти жесточайшие ограничения в целях безопасности в вебе сделаны. Видимо остаётся один выход: считывать содержимое файлов, и засовывать в xml-теги, а потом уповать на то, что функция readfile() скачает любой файл даже самого огромного размера. И, увы, в моём локальном приложении, с которым обмен, переписывать функцию импорта и делать отдельную кнопку для импорта из web-приложения, раз оно такие ограничения накладывает.
     
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Если хотите уводить документооборот в веб, уводите его в веб. Пусть клиент хранит свою документацию у вас на серверах. Главное - обеспечьте надежность этого хранилища, а то в случае чего будет лютый ад. И сделайте кнопку "скачать все", чтобы клиент, в случае чего, мог бекапить в оффлайн себе документацию.

    В таком случае от веба будет польза. Можно будет с любого планшета зайти в свою бухгалтерию с любого даже GPRS.
    Тогда в этом есть смысл. А если при заходе на страничку с любого чайника, сайт будет еще и всю документацию, которой может быть N гигабайт, выгружать клиенту - на кой такой колхоз? А если будет онлайн-морда для оффлайн - данных, на кой тогда она нужна вообще, если я не могу зайти на нее и что-то сделать удаленно. Толку от того, что ее рисует браузер, а не Дельфи?
     
  15. tlg25

    tlg25 Новичок

    С нами с:
    13 сен 2016
    Сообщения:
    11
    Симпатии:
    0
    Нет. документооборот у нас на 1С. Никакого веба. Это приложение связанное со всякой медицинской документацией, пользователь может отсканировать результаты УЗИ, например, и прикрепить. Выгружение не при заходе на страничку, а если пользователь осознанно нажмёт кнопку в определённом месте веб-программы. И это будет не только он-лайн морда, после завершения проекта к нему будет открыт доступ из интернета для всех. Уже сделала в php, чтобы все присоединённые файлы помещались в теги xml-файла. Теперь с своём оф-лайн приложение делаю, чтобы они считывались из xml-файла и в папках на диске сохранялись. Плохо, конечно, что из-за веба получается не совсем универсальный формат обмена данными между разными приложениями линейки и теперь всем придётся обновляться до новой версии, чтобы с веб-приложением обмениваться. Если бы веб позволял выгружать файлы свободно, ничего не пришлось бы в оф-лайн приложении менять. Но гораздо лучше так.чем никак.
     
  16. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    Какая у вас зарплата и опыт работы, если не секрет?
     
  17. tlg25

    tlg25 Новичок

    С нами с:
    13 сен 2016
    Сообщения:
    11
    Симпатии:
    0
    Про зарплату не могу озвучить, по-разному в зависимости от кризиса /не кризиса. Про опыт работы, конечно, не секрет. В php и web-программировании - нулевой. В Delphi - 19 лет, но активно первые 13 лет и всегда узконаправленно в области именно баз данных. 6 лет назад компания взяла курс на 1C, поэтому последние 6 лет только поддерживала и вносила не глобальные правки в наши старые Delphi-проекты. Новые версии Delphi видела только на ежегодных презентациях. В MSSQL Severe - 19 лет, но самая активная плотная работа с ним первые 10 лет, потом тоже, но в меньшем объёме, так как был проект, Который должен был работать и для MSSQL Server и для ACCESS одновременно и просили не писать хранимые процедуры, по-максимому всё выносить на клиентскую часть. В 1С - 6 лет, два-три года назад сдала на 1С-профессионал про платформе, именно по программированию. Специализация - самописные конфигурации, часть 1С-сертифицирована, часть для внутренних нужд компании. Типовые конфигурации(в смысле предметной области, обновления и т.п) почти не знаю, но изменения для них (создание дополнительных или редактирование существующих отчётов и т.п.) для бухгалтерии и канцелярии делала.
     
  18. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    я к тому, что может ну его нахрен? может попробовать что-то новое? https://twitter.com/womenwhogo

    а по задаче, на мой взгляд в вебе превалирует несколько иной подход. При загрузке файлы уничтожаются и всё из них затаскивается в веб. А когда надо - экспорт, если приспичило. Обычно в веб затаскивают с той целью, чтобы уже никто не юзал иное ПО.
     
  19. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Не везде есть интернет, где-то ещё синхронизируют данные с помощью удочек, чтобы повыше поднять телефон
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Даже облако от мэйлору, которое определяется сканерами как malware, не позволяет себе такого вероломства. Жесть.
     
  21. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Dropbox на macOS использует приёмы malware, чтобы получить привилегии, которые ему не нужны
    https://habrahabr.ru/post/310074/
     
  22. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    И Дроп туда же. Грустно.
     
  23. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    У Mega.nz клиент opensource и 50 гигабайт для начала дают
     
    Fell-x27 нравится это.
  24. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    Я говорю про то, что xmlки которые экспортнули из старого ПО затаскиваются в веб, и там потрошатся и затаскиваются в бд, и уже с вебом ты работаешь дальше. Не со своей программой. Соотв и файлы не нужны. А если нужны, то они создаются через экспорт.

    А вы - про файловые хранилища. Хз как вы так с темы соскочили.
     
  25. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Не не, мне мои файлы нужны. Выпиливание контента с компа пользователя при синхронизации - это вандализм и порча данных. Хиряк, завтра у тебя в ДЦ авария. А он вряд ли как у гугла, с многократной избыточностью. И кто-то остался с голым задом.