Здравствуйте. Всего несколько дней работаю с PHP, раньше никогда web-программированием не занималась. Но подключили к проекту на работе. Гуглила, не могу разобраться вроде с простым вопросом: Необходимо копировать файлы с сервера на клиентскую машину(ту, на которой пользователь зашёл на наш сайт) сайт и обратно. При этом при копировании файлов с клиентской машины в папки на сервере необходимо, чтобы пользователь не выбирал отдельно каждый файл (Пример, когда пользователь выбирает один файл в окне диалога, а потом он загружается на сервер в проекте есть). а нужно чтобы пользователь выбрал один файл - в моём случае это xml-файл, который я формирую в своём не web-приложении, я буду считывать из его тегов список файлов, которые нужно скопировать на сервер и дальше мне их надо туда скопировать без каких-либо действий-подтверждений со стороны пользователя. Не могу разобраться как скопировать файлы (пути к которым мне известны) с локального компьютера на сервер. (С помощью php). В случае с копированием с сервера на клиентскую машину, я могу сделать скачивание файлов по одному, при этом пользователю выскакивает стандартное окно с предложением сохранить или открыть файл. Но мне так не годится. Пользователь должен максимум 1 раз выбрать каталог, куда будут скачиваться все файлы (в может и вообще не выбирать, если он будет прописан в настройках "по умолчанию") и дальше все файлы (какие я как разработчик знаю, информация об этом хранится в таблицах в базе) должны автоматически скопироваться(загрузиться) в эту папку, без каких-либо действий со стороны пользователя. Он только один раз нажимает кнопку типа "Получить файлы". Вот с этим не могу разобраться.
Ну такая задача к обычному вэбу отношения не имеет. В обычно вебе браузер клиента посылает запрос и получает от сервера ответ. Если это файл с нужными заголовками - появляется стандартное окно для сохранения файла на локальную машину. Для решения задачи придется использовать средства, значительно выходящие за профиль данного форума. Например писать на джаве плагин или даже веб-браузер-файлокачалку целиком.
Называется "скачать файл". Решается ссылкой на файлы, или на архив с файлами, создаваемый на лету. Отдаётся любым сервером. называется "загрузить файл". Есть <input type="file" который этот вопрос решает. Поддерживается любым браузером. Это обязательные минимальные знания. Даже если они вам не пригодятся - знайте их на всякий случай. если ваше приложение запущено на машине юзера, то браузер вам не требуется вовлекать. Вам нужно отправить все файлы из своего приложения. Это просто. Веб-сервер сможет их принять так, как если бы их загрузил человек. Ему всё равно. ваше приложение должно само скачивать и раскладывать файлики. какой язык программирования вы предпочитаете? загуглите его и http
Первое я как раз без проблем могу сделать, но мне надо, чтобы не было стандартного окна. То есть писать надо куски кода на javascript или jquery? Я-то поняла, что работой с файлами php занимается...
нет, джаваскрипт это язык, который выполняется на страницах. Типа стандартного языка для интерактивности клиентской части. А я говорил про джаву. Джава не равно джаваскрипт. Джейквейри - библиотека написанная на джаваскрипте. Она просто реализует некоторые стандартные вещи удобным кроссбраузерным кодом. пхп это язык программирования, ориентированный на динамическую генерацию содержимого. Он выполняется на веб-сервере и может с такой же радостью быть заменен на многие языки, которые умеют обработку запросов по протоколу передачи гипертекста. Некоторый умеют общаться через веб-сервер, а некоторые позволяют реализовать и собственные хттп-сервисы. В общем ты не правильно поняла.
Одно моё на Delphi (я не единственный разработчик, но на данный момент основной), второе web-приложение написанное единственным в компании web-программистом. К работе с которым я сейчас подключаюсь. Там php, jquery. Базы данных MSSQL --- Добавлено --- Спасибо, знания всегда пригодятся. Мое приложение на машине у пользователя может не стоять. Реализую xml-обмен в определённом формате, у меня в приложении есть кнопки и процедуры выгрузки и загрузки. В программе есть присоединённые файлы, которые в базе не храним, храним только информацию о путях. Реализован уже обмен между разными базами локальными базами. Теперь хотят сделать обмен данных между моим приложением и новым проектом web-приложением. Там пользователь заходит под своим логином и паролем, есть фильтры, он может установить, например, за какой диапазон дат он хочет выгрузить ту или иную информацию и сответсвенно те или иные присоединённые файлы. Есть один обходной вариант: сохранять содержимое всех файлов и записывать строками в xml-теги, я дельфи я так делаю с небольшим файлами аналогами юзерпиков. Но если все присоединённые файлы в таком виде запихивтаь в 1 xml-файл, а они и большие могут быть, то он разрастётся до очень больших размеров, не уверена, что это хорошо. Хотя тогда его один как раз можно скачать со стандартным оконом диалога скачивания файлов(это я уже делала), и будет всё как хотет пользователь. Но не знаю, не будет ли каких-либо подстав с огромным xml-файлом. --- Добавлено --- Да, я перепутала джаву и джава-скрипт - поняла. С чистой джавой не работала совсем никогда.
ну я на нее намекнул только в рамках того, что у некоторых браузеров еще разрешено исполнение джава-апплетов. А вообще это типа дырявая технология и её старательно выпиливают всякие там гуглы.
тогда ваша задача не имеет решения --- Добавлено --- а что за файлы и почему человек хочет грузить их из разных мест?
У нас есть линейка приложений (первые начали разрабатываться 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-приложение, или, если захотят пользоваться и старым и новым вариантом, не вводить данные в два места, а иметь возможность гонять данные туда-сюда.
Так решить, как хотите вы, увы не получится. Вам нужно что-то вроде своего облачного хранилища делать. Если бы любой сайт мог хранить на любом компе любые файлы, или читать любые файлы с любого компа, наступил бы апокалипсис.
Да, мне уже сказали, что эти жесточайшие ограничения в целях безопасности в вебе сделаны. Видимо остаётся один выход: считывать содержимое файлов, и засовывать в xml-теги, а потом уповать на то, что функция readfile() скачает любой файл даже самого огромного размера. И, увы, в моём локальном приложении, с которым обмен, переписывать функцию импорта и делать отдельную кнопку для импорта из web-приложения, раз оно такие ограничения накладывает.
Если хотите уводить документооборот в веб, уводите его в веб. Пусть клиент хранит свою документацию у вас на серверах. Главное - обеспечьте надежность этого хранилища, а то в случае чего будет лютый ад. И сделайте кнопку "скачать все", чтобы клиент, в случае чего, мог бекапить в оффлайн себе документацию. В таком случае от веба будет польза. Можно будет с любого планшета зайти в свою бухгалтерию с любого даже GPRS. Тогда в этом есть смысл. А если при заходе на страничку с любого чайника, сайт будет еще и всю документацию, которой может быть N гигабайт, выгружать клиенту - на кой такой колхоз? А если будет онлайн-морда для оффлайн - данных, на кой тогда она нужна вообще, если я не могу зайти на нее и что-то сделать удаленно. Толку от того, что ее рисует браузер, а не Дельфи?
Нет. документооборот у нас на 1С. Никакого веба. Это приложение связанное со всякой медицинской документацией, пользователь может отсканировать результаты УЗИ, например, и прикрепить. Выгружение не при заходе на страничку, а если пользователь осознанно нажмёт кнопку в определённом месте веб-программы. И это будет не только он-лайн морда, после завершения проекта к нему будет открыт доступ из интернета для всех. Уже сделала в php, чтобы все присоединённые файлы помещались в теги xml-файла. Теперь с своём оф-лайн приложение делаю, чтобы они считывались из xml-файла и в папках на диске сохранялись. Плохо, конечно, что из-за веба получается не совсем универсальный формат обмена данными между разными приложениями линейки и теперь всем придётся обновляться до новой версии, чтобы с веб-приложением обмениваться. Если бы веб позволял выгружать файлы свободно, ничего не пришлось бы в оф-лайн приложении менять. Но гораздо лучше так.чем никак.
Про зарплату не могу озвучить, по-разному в зависимости от кризиса /не кризиса. Про опыт работы, конечно, не секрет. В php и web-программировании - нулевой. В Delphi - 19 лет, но активно первые 13 лет и всегда узконаправленно в области именно баз данных. 6 лет назад компания взяла курс на 1C, поэтому последние 6 лет только поддерживала и вносила не глобальные правки в наши старые Delphi-проекты. Новые версии Delphi видела только на ежегодных презентациях. В MSSQL Severe - 19 лет, но самая активная плотная работа с ним первые 10 лет, потом тоже, но в меньшем объёме, так как был проект, Который должен был работать и для MSSQL Server и для ACCESS одновременно и просили не писать хранимые процедуры, по-максимому всё выносить на клиентскую часть. В 1С - 6 лет, два-три года назад сдала на 1С-профессионал про платформе, именно по программированию. Специализация - самописные конфигурации, часть 1С-сертифицирована, часть для внутренних нужд компании. Типовые конфигурации(в смысле предметной области, обновления и т.п) почти не знаю, но изменения для них (создание дополнительных или редактирование существующих отчётов и т.п.) для бухгалтерии и канцелярии делала.
я к тому, что может ну его нахрен? может попробовать что-то новое? https://twitter.com/womenwhogo а по задаче, на мой взгляд в вебе превалирует несколько иной подход. При загрузке файлы уничтожаются и всё из них затаскивается в веб. А когда надо - экспорт, если приспичило. Обычно в веб затаскивают с той целью, чтобы уже никто не юзал иное ПО.
Не везде есть интернет, где-то ещё синхронизируют данные с помощью удочек, чтобы повыше поднять телефон
Даже облако от мэйлору, которое определяется сканерами как malware, не позволяет себе такого вероломства. Жесть.
Dropbox на macOS использует приёмы malware, чтобы получить привилегии, которые ему не нужны https://habrahabr.ru/post/310074/
Я говорю про то, что xmlки которые экспортнули из старого ПО затаскиваются в веб, и там потрошатся и затаскиваются в бд, и уже с вебом ты работаешь дальше. Не со своей программой. Соотв и файлы не нужны. А если нужны, то они создаются через экспорт. А вы - про файловые хранилища. Хз как вы так с темы соскочили.
Не не, мне мои файлы нужны. Выпиливание контента с компа пользователя при синхронизации - это вандализм и порча данных. Хиряк, завтра у тебя в ДЦ авария. А он вряд ли как у гугла, с многократной избыточностью. И кто-то остался с голым задом.