|
Отдача файла из хранилища с помощью Cache
|
|||
---|---|---|---|
#18+
Доброго времени суток, уважаемые форумчане. Имеется следующая задача: Есть приложение на 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() ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 08:19 |
|
Отдача файла из хранилища с помощью Cache
|
|||
---|---|---|---|
#18+
MasteRus, посмотрите на проект Cache-FileServer , в частности раздачу файлов . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 09:16 |
|
Отдача файла из хранилища с помощью Cache
|
|||
---|---|---|---|
#18+
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> ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 10:41 |
|
|
start [/forum/topic.php?fid=39&msg=39096158&tid=1556574]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 263ms |
total: | 383ms |
0 / 0 |