Быстрый просмотр прикрепленных документов

anton7805

Подскажите, по каким ключевым словам искать.
Дано
Недавно в gmail появилась полезная штука - быстрый просмотр прикрепленных документов. Очень удобно, не надо ничего скачивать. Посмотрел , если нужно скачал, не нужно - смотришь дальше. При этом работает и поиск внутри документа с подсветкой ключевых слов.
Хочется.
Сделать что-то наподобие. Есть веб-интерфейс, допустим, там есть ссылка на скачивание документа. По какому-либо действию пользователя ему показывается содержимое документа в модальном окне. Если еще будет возможность поиска по документу- вообще сказка. Типы документов могут быть разнообразны - doc, pdf, calc и т.д.
Как это сделать
И при этом не изобрести велосипед. ЯП и платформа не важны, хочется понять как эта проблема в принципе решается.
PS. Для файла, на который дается ссылка, есть возможность предварительной индексации, обработки и хранения в любом виде

okis

если документы доступны по прямой ссылке, то так разрешает сам гугл: http://docs.google.com/viewer

anton7805

Хорошая штука, жаль к нему нормального API нет

istran


"http://docs.google.com/viewer?url=" + urlencode(document_url)

вот и весь API =)
Даже разрешено в iframe вставлять.

anton7805

Проверил эксперементально, что тип документа viewer определят по урлу. А у меня могут быть ссылки на документы вида http://...download.html?id=N В этом случае viewer некорректно отображает. Хотя логичней было бы считать заголовки ответа на запрос и уже по ним определять тип файла, но гугл думает иначе. Конечно, можно и урл подменить, но это, как говорится, не элегантно

istran

определят по урлу. А у меня могут быть ссылки на документы вида http://...download.html?id=N В этом случае viewer некорректно отображает. Хотя логичней было бы считать заголовки ответа на запрос и уже по ним определять тип файла, но гугл думает иначе. Конечно, можно и урл подменить, но это, как говорится, не элегантно
Точно заголовки правильные? Например, вот этот документ открывается правильно http://docs.google.com/viewer?url=http%3A%2F%2Fwww.dadsgarag... , хотя в url ashx.

anton7805

Да , заголовки абсолютно правильные, ну вот пример docx file

istran

Не, 'Content-Type' неправильный:

$ curl -I 'http://zakupki.gov.ru/44fz/filestore/public/1.0/download/priz/file.html?uid=F01255CF63BC008AE043AC11072536EC'HTTP/1.1 200 OK
Set-Cookie: FRONT-Insert=R92621184; path=/; expires=Sun, 26-Jan-2014 19:35:45 GMT
Server: nginx
Date: Sun, 26 Jan 2014 19:27:05 GMT
Content-Type: application/download
Content-Length: 27051
Connection: close
Content-Disposition: attachment; filename="Спецификация.docx"
Content-Language: en-US
Expires: Mon, 26 Jan 2015 19:27:05 GMT
Cache-Control: max-age=31536000
dataform: FKS01

Тут Content-Type: application/download, а должен быть application/vnd.openxmlformats-officedocument.wordprocessingml.document, судя по http://technet.microsoft.com/en-us/library/ee309278%28office... . Хотя не ручаюсь, что с правильным Content-Type просмотровщик заработает.

anton7805

Не думаю, что в этом дело.
Название файла описывается полно
Content-Disposition: attachment; filename="Спецификация.docx"
Все браузеры при скачивании файла безошибочно определяют его название, а значит и расширение.
Похоже, что решение проблемы - подмена настоящего урла фейковой ссылкой с явным указанием файла в урле

zya369

Все браузеры при скачивании файла безошибочно определяют его название, а значит и расширение.
:facepalm:

istran

А проверить религия не позволяет?
Эти заголовки означают, что user agent должен загрузить документ, не пытаясь отобразить его самоcтоятельно. При этом про mime-type в них нечего не сказано.
Dropbox, например, отдает правильные заголовки:

$ curl -I http://dl.dropboxusercontent.com/s/p0wa8gxfs22sa37/Спецификация.docx
HTTP/1.1 200 OK
accept-ranges: bytes
cache-control: max-age=0
Content-length: 27051
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Date: Mon, 27 Jan 2014 17:13:49 GMT
etag: 18922n
pragma: public
Server: nginx
x-dropbox-request-id: 241daf96d1ce554b50524b7dee26f153
X-RequestId: d4011416e3a04b005270f7450d97313c
x-server-response-time: 260
Connection: keep-alive

И для этой ссылки viewer работает http://docs.google.com/viewer?url=https%3A%2F%2Fdl.dropboxus...
Если хочется обращаться именно к этим документам, можно поднять прокси, который будет добавлять нужные заголовки.

anton7805

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

Спс, так видимо и надо сделать

anton7805

http://dl.dropboxusercontent.com/s/p0wa8gxfs22sa37/Спецификация.docx

Я еще проверю, но думаю файл корректно отображается из-за урла, а на content-type ему пофиг
Оставить комментарий
Имя или ник:
Комментарий: