2015-09-10 18 views
6

W lutym 2015 Dropbox wydała nową funkcję, która pozwala ci wywołać lokalne otwarcie pliku z interfejsu WWW: https://blogs.dropbox.com/dropbox/2015/02/new-way-to-open-dropbox-files/Jak działa przycisk Dropbox Open?

Więcej informacji tutaj:

Oto przykład przycisku Otwórz widocznego z menu kontekstowego:

enter image description here

A oto krótki pokaz popup, który najwyraźniej łączącym do klienta synchronizacji:

enter image description here

To jasne, że klient synchronizacji Dropbox musi być zainstalowany, więc masz jakieś uruchamia się lokalny kod lokalny, co pozwala na pewne wymyślne rzeczy, które byłyby niemożliwe za pomocą skryptów JavaScript w przeglądarce, ale w jakiś sposób strona przeglądarki może wykonać nieoczekiwane rzeczy:

  1. selektywnie wyświetlać przycisk Otwórz na podstawie informacji uzyskanych od klienta synchronizacji (czy to na i czy plik istnieje lokalnie)
  2. spust, klikając na przycisk, działanie przez klienta synchronizacji (otwierając plik w domyślna aplikacja lub otwarcie folderu w Explorer/Finder)

Przez jaki mechanizm techniczny działają te dwie rzeczy?

+0

Prawdopodobnie coś podobnego do 'NPAPI'. –

+0

Wymagałoby to sporo inżynierii odwrotnej, aby znaleźć dokładny kanał wykorzystywany przez DropBox do tego celu, ale istnieje wiele możliwych sposobów. Czy chcesz wiedzieć, jak to robią lub jak możesz to zrobić? –

+0

Zarówno ... ciekawość intelektualna, a także zastanawiam się, czy mogę dołączyć do ich systemu, aby uruchomić otwarcie lokalnego folderu w Dropbox z mojej własnej usługi internetowej. – dlo

Odpowiedz

1

To tylko przypuszczenie, ale chyba coś takiego:

  1. synchronizacji klient wie wszystko o lokalnym istnieniu plików.
  2. Klient synchronizacji wysyła te informacje do serwera synchronizacji, więc serwer wie również.
  3. Strona internetowa Dropbox może następnie selektywnie wyświetlać przycisk Otwórz.
  4. Po kliknięciu przycisku otwierania strona internetowa kontaktuje się z serwerem synchronizacji, który z kolei wysyła wiadomość do klienta synchronizacji, aby "otworzyć ten plik".
  5. Klient synchronizacji otwiera ten plik. Na komputerze Mac będzie to proste polecenie powłoki open [path].

Nic nadzwyczajnego w przeglądarce.

+0

Twoje wyjaśnienie pomija najważniejsze kroki. np. - w kroku 3, w jaki sposób strona selektywnie wyświetla link w oparciu o to, co klient synchronizacji wie? Konkretnie, jaki jest mechanizm ich rozmawiania ze sobą? Wyglądałoby na to, że czysty Javascript nie powinien mieć na to sposobu, i nie ma wtyczek ani rozszerzeń działających w przeglądarce, o ile wiem. – dlo

+0

Próbowałem opisać, że strona internetowa nie rozmawia z klientem synchronizacji, po prostu rozmawia z serwerem. To powinno być możliwe dzięki zwykłej AJAX. – merikonjatta

+0

Hmm ... sugerując, że nawet polecenia "otwartego pliku" przechodzą z przeglądarki na serwer, a następnie synchronizują klienta. Z pewnością jest to możliwe i wyjaśniałoby opóźnienie, kiedy zdecydujesz się otworzyć plik ... trwa dłużej niż wtedy, gdy jest to tylko spust lokalny. – dlo

Powiązane problemy