powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Отдача файла из хранилища с помощью Cache
3 сообщений из 3, страница 1 из 1
Отдача файла из хранилища с помощью Cache
    #39096107
MasteRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, уважаемые форумчане. Имеется следующая задача:
Есть приложение на CSP, к нему следует привязать внешнее хранилище файлов и отдавать запрашиваемые файлы с помощью этого приложения. Если файлом является картинка или ПДФ, то этот файл должен открываться в браузере.
Пытаюсь это сделать через установку http-headers:
  //get filiname with pathpath
  Set filename=$G(%request.Data("FILENAME",1))
  //w "FILENAME="_filename_"<BR/>"
  
  Set stream=##class(%FileBinaryStream).%New()
  Set stream.Filename=filename
  s filename1=filename
  
  //find filename in fullpath
  s i=1
  while ($P( filename1,"/",i)'="") {
    s purefilename=$P( filename1,"/",i)
    s i=i+1
  }
  //try to get extension
  s i=1
  while ($P( purefilename,".",i)'="") {
    s ext=$P( purefilename,".",i)
  
    s i=i+1
  }
  
  //set content type for our response
  //enabledExtensions="jpg,jpeg,bmp,gif,png,pdf,doc,docx"
  SET ContentType=$CASE(ext,"jpeg":"image/jpeg","jpg":"image/jpeg","png":"image/png","gif":"image/gif","png":"image/png","tif":"image/tiff","tiff":"image/tiff","bmp":"image/bmp","pdf":"application/pdf","doc":"application/msword","docx":"application/msword",:"application/octet-stream")
  s %response.ContentType=ContentType
  do %response.SetHeader("Content-Description","File Transfer")
  do stream.OutputToDevice()
Соответственно, файл отображается текстом. Как его вывести в соответствии с типом?
...
Рейтинг: 0 / 0
Отдача файла из хранилища с помощью Cache
    #39096158
eduard93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRus, посмотрите на проект Cache-FileServer , в частности раздачу файлов .
...
Рейтинг: 0 / 0
Отдача файла из хранилища с помощью Cache
    #39096260
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasteRus ,

10074337
14492382

Всё делается намного проще:<html>
<head>

<script language="Cache" method="OnPreHTTP" arguments="" returntype="%Boolean">
  ; Путь к файлу можно указывать абсолютный или относительный.
  ; Примеры:
  ;s %request.Data("FILE",1)="/csp/user/copyright.pdf"
  ;s %request.Data("STREAMOID",1)=..Encrypt(##class(%CSP.StreamServer).GetOidForFile("C:\Каталог А и Б\copyright.pdf"))

  s %request.Data("STREAMOID",1)=..Encrypt(##class(%CSP.StreamServer).GetOidForFile($g(%request.Data("FILENAME",1))))
  q ##class(%CSP.StreamServer).OnPreHTTP()
</script>

<script language="Cache"  runat="server">
  d ##class(%CSP.StreamServer).OnPage()
</script>

</head>

</html>
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Отдача файла из хранилища с помощью Cache
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]