LINUX.ORG.RU

php, работа с файлами


0

1

привет всем. помогите пожалуйста, нужно решить задачу:

на сервере есть файлы doc, odt, ods, xls. во всех файлах есть текст, например _%15%_

нужно

1) заменить его (текст) во всех четырех файлах на стороне сервера с помощью php на текст _%22%_

2) передать клиенту, работающему с этот момент с сайтом так, чтобы файл сразу открылся. желательно без диалогов. хотя это наверное невозможно - диалог Открыть, Сохранить, Отмена будет в любом случае?

3) если без диалога никак - то при нажатии Открыть откроется документ у пользователя. можно ли сделать так, чтобы если он что-то поправил в документе, нажал Закрыть(крестик наверху справа) и выбрал Сохранить изменения - чтобы измененный файл автоматически был загружен на сервер?

пункт 3) видится мне что-то вроде - сохраняем файл на компьютер пользователя в каталог временных файлов с известным серверу именем и после правки выдаем пользователю на сайте поле input file с заполненным путем(чтобы обзор не нажимать лишний раз пользователю). а пользователь уже нажимает Загрузить и сайт вытягивает файл.

или через js как-нибудь..

извините за поток сознания, если что непонятно - пишите, поясню. Спасибо всем заранее!


> заменить его (текст) во всех четырех файлах на стороне сервера с помощью php на текст _%22%_

я хз, как с doc/xls, но в случае с odt(s), который по сути зазипованный xml можно распаковать, заменить текст, запаковать обратно.

передать клиенту, работающему с этот момент с сайтом так, чтобы файл сразу открылся. желательно без диалогов

это уже зависит от настроек браузера

3)

не взлетит, временные пути везде разные

lazyklimm ★★★★★ ()
Ответ на: комментарий от lazyklimm

понял, спасибо! нашел статью на эту тему http://habrahabr.ru/blogs/php/119551/

+

там есть линк на http://phpword.codeplex.com/ надо затестить будет

по 3) - есть же переменные окружения, верно, пользовательские - которые видно со стороны сервера и которые можно использовать в указании относительного пути к файлу. в php это вроде TEMP, точно не помню.

Cargo ()
Ответ на: комментарий от lazyklimm

> 1) заменить его (текст) во всех четырех файлах на стороне сервера с помощью php на текст _%22%_

Можно. Для PHP есть экстеншены, которые работают с doc & docx

2) передать клиенту, работающему с этот момент с сайтом так, чтобы файл сразу открылся. желательно без диалогов. хотя это наверное невозможно - диалог Открыть, Сохранить, Отмена будет в любом случае?

Да, диалог, по-умолчанию, всегда будет. Обойти его нельзя никак.

3) если без диалога никак - то при нажатии Открыть откроется документ у пользователя. можно ли сделать так, чтобы если он что-то поправил в документе, нажал Закрыть(крестик наверху справа) и выбрал Сохранить изменения - чтобы измененный файл автоматически был загружен на сервер?

Не возможно. Так как у нас нет возможности среагировать на закрытие файла у клиента на компьютере.

VirRaa ★★★ ()
Ответ на: комментарий от Cargo

> в php это вроде TEMP, точно не помню

Это директория для временного хранения файлов на сервере, а не у клиента. К клиентским переменным окружения доступа нет.

VirRaa ★★★ ()
Ответ на: комментарий от Cargo

Поздравляю, Вы изобрели гугл документы.

3) если без диалога никак - то при нажатии Открыть откроется документ у пользователя. можно ли сделать так, чтобы если он что-то поправил в документе, нажал Закрыть(крестик наверху справа) и выбрал Сохранить изменения - чтобы измененный файл автоматически был загружен на сервер?

Не возможно. Так как у нас нет возможности среагировать на закрытие файла у клиента на компьютере.

Теоретически возможно если ссылкой кормить через Java applet, но очень много если, браузер не должны закрыть и т.п.

hidden_4003 ()
Ответ на: комментарий от hidden_4003

> Теоретически возможно если ссылкой кормить через Java applet, но очень много если, браузер не должны закрыть и т.п.

Ну, речь-то шла о PHP & JS... но неважно. Согласен с тем, что очень много «если», гарантированного эффекта добиться пока не возможно.

VirRaa ★★★ ()

Ты можешь написать программу, которая будет всё это делать. (Qt WebKit?)

В простейшем случае, она будет грузить тот же самый сайт, но как-то по-другому реагировать на загрузку и модификацию файлов. Сайт при этом всё так же доступен через обычный браузер, но уже без плюшек.

Еще вариант - давать ссылки на все файлы в виде какого-то специального протокола. Например, word://path.to.my.file. И сделать расширения подо все популярные браузеры, которые будут обрабатывать этот тип протокола. Тогда уже в зависимости от того как сделаешь, например предупреждение об открытии будет происходить только в самый первый раз - пользователь сможет клацнуть кнопку «больше не спрашивать», и оно будет работать с твоими плагинами напрямую.

stevejobs ★★★★☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.