![]() |
|
|
![]()
|
|
| Gella7 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.8.2008 Где: г.Кемерово Репутация: нет Всего: нет |
Я загружаю файл в blob. Файлы могут быть разнве - текстовые, архивы, jpg, pdf....
к примеру файл с расширением djvu
Нужно сделать так, чтобы, допустим при щелчке на кнопку (не важно) файл открывался в соответствующем ему приложении. Я пока только сделала пересохранение, тоесть берем файл и сохраняем с соответствующим расширением:
Но это очень не удобно - сохранять а потом запускать... не могу никак придумать, что делать |
||||
|
|||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 7 Всего: 17 |
Gella7, т.е. расширение ты знаешь. Вот по расширению и определяй с помощью какой программы открывать. Можно даже хранить в настройках ассоциации с определенными программами. Вот пример загрузки из blob без сохранения на диск. Однако, необходимо помнить, что в этом случае все загруженные данные будут висеть в памяти. Учитывая, что размеры некоторых PDF и DjVu файлов могут быть 50 - 70 Mb: ИМХО: Лучше файлы хранить отдельно, а в БД хранить ссылки на них или только их имена. Это сообщение отредактировал(а) former - 22.9.2009, 10:01 -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Gella7 |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.8.2008 Где: г.Кемерово Репутация: нет Всего: нет |
Висеть то, это да... Я об этом думала, но имена файлов наверняка могут быть одинаковыми. Как то их пометить что-ли какими-нибудь индексами... Да и все равно, как их запускать-то программно - они ведь все разные, и суть проблемы не меняется.
Я так понимаю, надо будет к каждому приложению код писать для открытия... ну это ладно. я просто не знаю как. Если с word, excel или текстовый я как-то еще разберусь, например ворд
и так далее. или это просто сделать? |
||||||
|
|||||||
| former |
|
||||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 7 Всего: 17 |
Присваивай уникальное имя при внесении в БД (переименовывай, переноси в хранилище - отдельную папку).
Используй ShellExecute. Другими словами, у тебя файлы будут открываться программами, с которыми ассоциировано то, или иное расширение в Windows. Храни расширение отдельным столбцом. Это сообщение отредактировал(а) former - 22.9.2009, 10:28 -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
||||
|
|||||
| Gella7 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.8.2008 Где: г.Кемерово Репутация: нет Всего: нет |
Ну вот как? Лежит допустим какой-нибудь файл с *.ххх расширением, как его взять и запустить программно, независимо от расширения?
Не могу никак докопаться Добавлено через 1 минуту и 41 секунду О, значит есть такое... пошла копать |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 7 Всего: 17 |
Читай про ShellExecute. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Gella7 |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.8.2008 Где: г.Кемерово Репутация: нет Всего: нет |
Тот вариант, над которым я изначально работала, кажится все-таки в топку летит
потому что не могу в эту прекрасную функцию
засунуть этот файл из blob, потому что не могу его от туда вытащить вот так как-то... вариант
пользователь хочет прицепить файл. Показывает через OpenDialog хде он там у него файл программно копируется на сервер, при этом запоминается имя, расширение... ну наверное к имени номер его прикрепляется. Пользователь хочет открыть документ - ShellExecute и все. и третий извращенный сохраняется он все-таки в blob. а достается так - в зависимости от расширения создается пустой файл туда за писывается из blob
открывается через ShellExecute потом когда пользователь его закрывает, этот временный файлик удаляется (тоже поди не сложно) по моему я переработала |
||||||
|
|||||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
Вариант 1
Вариант former'а с внешним хранением файлов мне нравится, и это можно попробовать реализовать как копирование файлов на сервер с добавлением получившего местоположения в БД. Вариант 2 1) Загружаем файл в BLOB и записываем расширение. 2) При выборе - создаем временный файл из BLOB'а и открываем ShellExecute, а после закрытия удаляем. |
|||
|
||||
| dvamaster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: 3 Всего: 10 |
мдя, а вот как запустив через shellexecute отследить закрытие запущеной программы?
Поэтому поводу из MSDN
возвращаемый результат не HINSTANCE, а код ошибки -------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
|||
|
||||
| former |
|
||||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 7 Всего: 17 |
Необходимо еще учитывать то, что клиентская программа может быть закрыта раньше, viewer-а. Года 4-е назад делал электронную библиотеку. Файлы хранил отдельно. Экземпляр файла копировал в Temp-папку на клиенте. При запуске клиента и выходе из него очищал временную папку. Хранить файлы отдельно считаю лучше, т.к.: - скорость в работе с БД; - переносимость БД; - малые затраты на резервное копирование. Позже хотел сделать собственный viewer (что бы файлы не копировали), но так руки и не дошли. Конечно это не панацея. P.S. Точно сказать не могу, но вроде есть способ узнать, каким приложением файл открыт. Это сообщение отредактировал(а) former - 22.9.2009, 16:35 -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Не знаю, отвечали здесь или нет
Сохраняешь файл во временную папку с правильным расширением. А затем ShellExecute() Это сообщение отредактировал(а) Akella - 22.9.2009, 16:50 |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 7 Всего: 17 |
Akella, чуть выше.
Это сообщение отредактировал(а) former - 22.9.2009, 16:57 -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Gella7 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.8.2008 Где: г.Кемерово Репутация: нет Всего: нет |
К слову, вдруг кому понадобится
создание каталога
удаление каталога со всем содержимым
Это ко второму способу. Всем большое спасибо!!! |
||||
|
|||||
| Gella7 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.8.2008 Где: г.Кемерово Репутация: нет Всего: нет |
Может кто-нибудь подскажет что тут не так:
ругается на предпоследнюю строчку и говорит что not enough actual parameters |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
лучше наверно ForceDirectories() тк CreateDir требует что бы путь по которому создаешь папку существовал Добавлено через 2 минуты и 33 секунды
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |