Připojení k disku Yandex prostřednictvím klienta WebDAV. Výuka WebDav

Na příjemné komunikaci s diskem Yandex je jen jedna smutná věc: malý přidělený objem. I když existuje možnost přidat prostor, stále to nestačí.

Aplikace od vývojářů Yandex vám neumožňuje pracovat s několika účty současně, standardní nástroje Windows nejsou schopny připojit několik síťových jednotek z jedné adresy.

Bylo nalezeno řešení. To je technologie WebDAV a klient CarotDAV. Tato technologie umožňuje připojit se k úložišti, kopírovat soubory z počítače do cloudu a zpět.

Pomocí CarotDAV můžete také „přenášet“ soubory z jednoho úložiště (účtu) do druhého.

Tip: stáhnout Přenosná verze a zapište složku s programem na USB flash disk. Tato verze umožňuje klientovi pracovat bez instalace. Tímto způsobem můžete přistupovat ke svému úložišti z jakéhokoli počítače. Kromě toho může nainstalovaná aplikace odmítnout spustit svou druhou kopii.

Takže jsme se rozhodli pro nástroje, nyní začněme s implementací. Spusťte klienta, přejděte do nabídky "Soubor", "Nové připojení" a vybrat si "WebDAV".

V okně, které se otevře, přiřaďte název našemu novému připojení, zadejte přihlašovací jméno a heslo k účtu Yandex.
V terénu "URL" napište adresu. Pro Yandex Disk je to takto:
https://webdav.yandex.ru

Pokud z bezpečnostních důvodů chcete pokaždé zadat své uživatelské jméno a heslo, zaškrtněte políčko uvedené na snímku obrazovky níže.

Klikněte "OK".

V případě potřeby vytvoříme několik spojení s různými údaji (login-heslo).

Cloud se otevře dvojitým kliknutím na ikonu připojení.

Chcete-li se současně připojit k několika účtům, musíte spustit další kopii programu (dvojitě klikněte na spustitelný soubor nebo zástupce).

S těmito okny můžete pracovat jako s běžnými složkami: kopírovat soubory tam a zpět a mazat je. Správa probíhá prostřednictvím vestavěné kontextové nabídky klienta. Drag-n-drop také funguje.

Pojďme si to shrnout. Zjevnou výhodou tohoto řešení je, že soubory jsou uloženy v cloudu a nezabírají místo na vašem pevném disku. Můžete také vytvořit neomezený počet disků.

Mezi mínusy zaznamenám následující: rychlost zpracování souborů závisí na rychlosti připojení k internetu. Další nevýhodou je, že neexistuje způsob, jak získat veřejné odkazy pro sdílení souborů.

Ve druhém případě si můžete vytvořit samostatný účet a pracovat jako obvykle prostřednictvím aplikace a jako úložiště používat disky připojené přes klienta.

Zde je zajímavý způsob, jak připojit Yandex Disk prostřednictvím klienta WebDAV. Toto řešení bude výhodné pro ty, kteří plánují pracovat se dvěma nebo více cloudovými úložišti.

V tomto příspěvku budeme hovořit o skvělém doplňku pro Internet Information Services (IIS) s názvem WebDAV. WebDAV je protokol pro přístup ke sdíleným souborům a složkám přes internet, trochu podobný FTP. Přenos souborů protokolem WebDAV lze provádět přes různé firewally a firewally, přenášené informace lze šifrovat a práce se soubory a složkami je mnohem pohodlnější, zcela připomíná práci služby sdílení souborů a složek ve Windows.

Spolu s vydáním Windows Server 2008 představil Microsoft aktualizovanou verzi modulu WebDAV pro IIS 7. Tento modul výrazně rozšířil možnosti, pohodlí a zabezpečení používání WebDAV pro přístup k souborům na internetu, navíc nyní podporuje multi- uživatelská práce a zamykání souborů.

V tomto článku budeme hovořit o tom, jak nainstalovat WebDAV na Windows 7 a Windows Server 2008 R2, jak jej nakonfigurovat a jak získat přístup k souborům a složkám, které jsou sdíleny v síti pomocí WebDAV.

Znovu vám připomenu, že WebDAV je rozšířením služby IIS, takže pokud ještě nemáte nainstalovanou službu IIS, udělejte tak (jak si pravděpodobně pamatujete ve Windows 7 i Windows Server 2008 R2, IIS je standardně dodáván, ale z bezpečnostních důvodů komponenta musí být povolena samostatně). Instalace WebDAV ve Windows 7 a Windows 2008 R2 je mírně odlišná.



Nastavení publikování WebDAV ve správci IIS

V tomto kroku povolíme WebDAV pro web IIS a udělíme práva na úpravy obsahu místnímu správci.

  1. Ve Správci služby IIS rozbalte strom webu a vyberte VýchozíWebmísto.
  2. Jak je znázorněno na obrázku, klikněte na prvek WebDAVAuthoringPravidla.
  3. Na stránce WebDAV Authoring Rules klikněte v pravém sloupci( akce) přes odkaz UmožnitWebDAV
  4. Po povolení WebDAV vytvoříme pravidla pro přístup k obsahu kliknutím na tlačítko PřidatAuthoringPravidlo.
  5. V okně Přidat autorské pravidlo zadejte:
  6. V Ovládacích panelech služby IIS vyberte možnost Autentizace.
  7. V okně ověřování povolte ověřování systému Windows ( Windowsautentizace) Pokud bude služba IIS fungovat pouze jako server WebDAV, lze anonymní ověřování zakázat.
  8. Vraťte se na úroveň Výchozí web a vyberte Povolení Pravidla(nebo .Net Authorization Rules)
  9. Vytvořit Povolit pravidlo (nebo se ujistěte, že již existuje), ve kterém by měl administrátor povolen přístup na server (v mém případě takové pravidlo již existovalo a všichni uživatelé - Všichni uživatelé včetně administrátora měli povolen přístup k IIS) .

Zkusme se nyní připojit k webu WebDAV pomocí účtu správce, pro který do příkazového řádku zadejte:

Využití sítě * http://localhost/

V důsledku toho se v systému objeví nový síťový disk připojený ze serveru pomocí WebDAV.

Poradenství. Pokud se pokusíte připojit adresář přes WebDav, zobrazí se chyba „ Došlo k systémové chybě 67. Název sítě nelze nalézt.", ve Windows 8/Windows Server 2012 zkuste nainstalovat komponentu Zkušenosti s počítačem a ujistěte se, že služba Webový klient spuštěna.

Pokud potřebujete sdílet konkrétní složku na disku, musíte vytvořit virtuální adresář služby IIS. Chcete-li to provést, klikněte pravým tlačítkem myši na web a vyberte možnost „Přidat nový virtuální adresář“:

Zadejte alias (název virtuálního adresáře IIS) a cestu ke složce, ke které chcete sdílet přístup, a klepněte na OK.

Nyní pro připojení tohoto adresáře musíte použít příkaz:

Net use * http://site/projects

Síťová jednotka připojená přes WebDAV vypadá takto:

Jak vidíte, WebDAV je vynikající nástroj pro vzdálený přístup k souborům a složkám ve Windows přes protokol HTTP, který lze použít i přes firewall. Navíc, protože WebDAV je založen na IIS, znamená to, že v této architektuře můžeme k šifrování přenášených dat využívat různé bezpečnostní technologie a ovládací prvky IIS, včetně HTTPS (při běžném HTTP se všechny informace přenášejí v čistém textu, kromě hesla, které je při použití ověřování systému Windows šifrováno).

Pojďme si popsat několik dalších aspektů používání WebDAV


Kdybych na úvod začal popisovat výhody cloudového úložiště dat, mysleli byste si, že jsem byl po dvaceti letech pozastavené animace právě rozmražený nebo že vážně zneužívám prášky na spaní :). Proto řeknu krátce, programátorsky: když jsem stál před úkolem vytvořit program, který by uměl pracovat se soubory na více úložištích, aniž by byl vázán na API konkrétní služby (mluvili jsme o zálohování), obrátilo se to že to nebylo tak jednoduché. Rozhodl jsem se vám říci o všech jemnostech a úskalích práce provedené v tomto článku.

WebDAV

WebDAV (Web Distributed Authoring and Versioning) je protokol pro přenos dat a práci s nimi, postavený na HTTP 1.1. Zde je třeba poznamenat, že přenos může být buď zabezpečený, nebo nezabezpečený. V samotném protokolu není žádné zabezpečení, ale lze jej přidat pomocí implementace autentizace na webovém serveru a šifrování přes SSL, proto bude v tomto případě místo HTTP použito HTTPS.

DAV byl původně vyvinut pro společnou tvorbu a úpravu webových stránek, ale v procesu používání našel uplatnění jako síťový distribuovaný souborový systém, efektivní pro práci v prostředí s vysokou zátěží a podporující nestabilní připojení. DAV je tedy vhodný pro správu souborů na webových serverech, jinými slovy implementaci cloudového úložiště informací, kde byl použit. S jeho pomocí můžete provádět základní operace se soubory obsaženými na serveru, provádět pokročilé operace, jako je: blokování, získávání metadat, kontrola verzí a další. Tento protokol se stal náhradou starého dobrého FTP, jehož čas se chýlí ke konci.

WebDAV poskytuje sedm příkazů:

  • PROPFIND - získání vlastností objektu na serveru ve formátu XML;
  • PROPPATCH - změna vlastností objektu;
  • MKCOL - vytvořte složku na serveru;
  • COPY - kopírování na straně serveru;
  • MOVE - pohyb na straně serveru;
  • LOCK - uzamknutí předmětu;
  • UNLOCK - odstranění zámku z předmětu.

WebDAV tedy umožňuje měnit vlastnosti objektů uložených na serveru, provádět vyhledávání na základě vlastností, zamykat objekt (v našem případě soubor) tak, aby jej mohl upravovat pouze jeden uživatel v distribuovaném prostředí, ve kterém mnoho uživatelů mohou mít přístup, spravovat verze souborů (prostřednictvím starších příkazů check -in, -out) a také provádět pokročilé řízení přístupu k souborům na základě seznamu.

WebDAV navíc podporuje starší příkazy: GET - pro stažení souboru, PUT - pro nahrání na server a DELETE - pro odstranění objektu. Nebudeme se dívat na všechny příkazy; v mém případě jsem k implementaci funkčnosti nástroje potřeboval pouze čtyři.

V současnosti se na vývoji protokolu podílejí Microsoft, Mozilla, Novell, IBM a další. Proto byste neměli být překvapeni, že podpora WebDAV je přítomna v mnoha produktech společnosti Microsoft (včetně Internet Explorer, Explorer, webový server IIS a dalších), v prohlížeči Mozilla Firefox, v produktech Novell a IBM. Instalací pluginů se navíc můžete „spřátelit“ s protokoly Total Commander a FAR.

Jak již bylo zmíněno, ve Windows lze vzdálené úložiště WebDAV připojit k Průzkumníku jako další disk. V OS X můžete udělat totéž tak, že zorganizujete připojení k serveru WebDAV jako další adresář v prohlížeči Finder.

Možná řešení

Stál jsem před úkolem propojit a organizovat práci s daty na dvou souborových úložištích: Yandex.Disk a Dropbox. Obě tyto služby podporují protokol WebDAV. Registrací pošty na Yandexu automaticky získáte přístup k 10 GB cloudového úložiště, ke kterému se můžete připojit nejen prostřednictvím standardního klienta, ale také pomocí nástroje třetí strany (například vašeho vlastního programu) přes protokol WebDAV. Když se zaregistrujete do Dropboxu, získáte 5 GB místa na disku, které lze využít prostřednictvím standardního klienta. Pro přístup k úložišti přes WebDAV však musíte podstoupit další registraci. V důsledku toho, jak se ukázalo, tento přístup není zdarma, nicméně po registraci je bezplatný přístup poskytnut na dva týdny. Velikost úložiště lze zvětšit: buď dodatečnou platbou, nebo účastí na různých propagačních akcích prováděných službami, například hledáním chyb a jejich hlášením vývojářům.

Když jsem potřeboval napsat program pro práci s protokolem WebDAV, první věc, kterou jsem udělal, bylo podívat se na Win32 API, zda pro to existují funkce podobné těm, které jsou k dispozici pro práci s FTP. Při pohledu do budoucna si všimnu, že jsem měl krátký termín, takže jsem neměl v úmyslu používat funkce na úrovni API. Jak můžete očekávat, Win32 API, počínaje verzí Windows Vista, obsahuje WebDAV API. Zahrnuje jeden výčet, tři struktury a sadu funkcí. Myslel jsem, že je to dobré znamení, protože jistě budou existovat řešení vyšší úrovně založená na standardním API a já bych se nemusel zdržovat funkcemi API.

Pak jsem narazil na Delphi XE3 a rozhodl jsem se zkontrolovat, jaké má nástroje pro práci s protokolem WebDAV. Ukázalo se, že je v něm komponenta IdWebDav (na kartě Indy Clients palety komponent). Už jsem si myslel, že to je konec výzkumu... Ukázalo se ale, že tato komponenta se k Yandexu nijak nepřipojuje (Yandex.Disk pro mě byla služba s vyšší prioritou, takže jsem všechny testy primárně prováděl na to).

Pak jsem se rozhodl použít starou, ale časem prověřenou síťovou knihovnu Synapse pro Delphi. Kromě toho existuje na RuNet vynikající stránka, která obsahuje několik článků věnovaných této knihovně, www.webdelphi.ru. Zpočátku šla práce dobře a mohl jsem implementovat několik funkcí protokolu: vytvoření složky, stahování souborů, získání vlastností objektu. Ale nejdůležitější funkce - nahrávání souborů na server z místního počítače - nebyla nikdy implementována. Bylo to smutné: na internetu nejsou žádné rozumné informace o tomto protokolu. Bing našel několik placených sad komponent pro práci se sítí, z nichž jednu jsem se ze zvědavosti rozhodl použít ke zjištění, zda je možné nahrát soubor na Yandex.Disk. Tento se ukázal jako Clever Internet Suite. Po vytvoření komponenty třídy clWebDav se nám podařilo nahrát soubor na server s jedním řádkem kódu:

kde stream je datový proud souboru dříve vytvořený pro čtení.

Skvělé, ale cena tohoto produktu je nečekaná: více než 500 $. tedy co není gud. Chcete-li použít tuto metodu, věnujte pozornost verzi knihovny: můžete se připojit k Yandexu pouze pomocí verze 7.0 a vyšší, pokud používáte verzi 6.0, která je rozšířená na internetu, bude nahrávání dat na server není možné. Unavilo mě hrát si s Delphi a rozhodl jsem se obrátit na dotNET a C#.

Připojte se k Yandex.disk + vytvořte sbírku

Protože WebDAV běží nad HTTP/S, rozhodl jsem se použít třídy HttpWebRequest a HttpWebResponse, které jsou součástí .NET Frameworku od verze 2.0. V tomto případě použijeme rozhraní .NET Framework 4.0 – níže vám řeknu proč. Stručně řečeno, první z uvedených tříd představuje HTTP požadavek, druhá představuje HTTP odpověď. Naším úkolem je správně formulovat požadavek tak, aby mu WebDAV server rozuměl. Chcete-li zjistit, jak správně formulovat požadavky na server WebDAV, přečtěte si dokumentaci Yandex o používání protokolu WebDAV.

Dalším krokem je napsat malý program, který může provádět čtyři operace: vytvořit složku na vzdáleném hostiteli, nahrát objekt, stáhnout objekt a odstranit objekt. Tyto operace jsou dostatečné pro většinu výrobních aplikací. Pro jednoduchost si vytvoříme aplikaci WinForms. V několika slovech vám řeknu o svém programu. Je to konzolová aplikace spouštěná dávkovým souborem podle plánu. Jeho hlavní činností je nahrávání souborů na vzdálený hostitel, přičemž mezi jeho úkoly patří správné zpracování masky pro výběr souborů a také zpracování cest, na kterých se nacházejí, plus správné vytvoření hierarchie složek v cloudu, podobně jako např. který se nachází na lokálním disku. Kromě toho, protože program pracuje v automatickém režimu, vytváří soubor protokolu. V dnešním programu tyto kroky přeskočíme (samozřejmě jsou mimo téma) a zaměříme se na protokol WebDAV.

Upozornění: při vytváření šablony projektu je lepší použít jako základ .NET Framework 4.0. A přestože se podpora WebDAV objevila již ve druhé verzi, testy ukázaly, že stejný program, překompilovaný pomocí .NET 4, pracuje dvakrát rychleji, a to se týká rychlosti práce se soubory a jejich odesílání.

Po vytvoření šablony aplikace umístěte na její formulář čtyři tlačítka. První operací, kterou budeme implementovat, bude vytvoření složky (nebo kolekce). Je ze všech nejjednodušší. Poznámka: Přestože Yandex.Disk funguje pomocí zabezpečeného protokolu HTTPS, složku lze vytvořit pomocí HTTP. Ve formuláři budeme také potřebovat čtyři vstupní pole: zadat adresu vzdáleného hostitele (prozatím zamíříme na Yandex.Disk: https://webdav.yandex.ru/), zadat uživatelské jméno, heslo (např. autentizace na Yandex) a zadejte název složky , kterou chceme v cloudu vytvořit (obr. 1). Upozornění: adresa serveru musí být zadána spolu s protokolem, v tomto případě https://.

Nejprve do kódu zahrňte jmenné prostory: using System.Net; - pro práci se sítí a používání System.IO; - pro I/O souboru. Poté vytvořte obslužnou rutinu pro událost click na tlačítku CreateDir. Napište do něj následující kód:

String folder = folderEdit.Text;

String url = urlEdit.Text;

Protokol WebDAV neumožňuje vytvoření více podsložek v jednom požadavku, například /složka1/složka2/; Můžete vytvořit pouze jednu složku: /složka1/. Pokud adresář existuje a odeslaný požadavek se pokusí vytvořit adresář se stejným názvem, server vygeneruje výjimku, která musí být zachycena pomocí konstrukce try/catch. Výše uvedený příklad nezpracovává výjimky, takže pokud tento kód používáte ve své aplikaci, nezapomeňte jej přidat. Pokud potřebujete zjistit, zda adresář existuje nebo ne, můžete použít požadavek PROPFIND a poté přijmout a analyzovat odpověď serveru obsahující informace ve formátu XML o objektech dostupných na serveru. Ale to bude trvat dlouho a podle mého názoru je lepší použít požadavek MKCOL a pokud je přítomna složka se stejným názvem, zpracovat výjimku. V nástroji konzoly tedy vytvořím hierarchii složek. Kromě toho, pokud již existuje adresář se stejným názvem, je zadán.

Smazání objektu

Odstranění souboru a/nebo adresáře pomocí protokolu WebDAV je stejně jednoduché jako vytvoření kolekce. K implementaci této úlohy použijte výše uvedený kód, ve kterém musíte nahradit řádek určující metodu prováděnou serverem následujícím:

Request.Method = "DELETE";

Jak vidíte, třída WebRequestMethods.Http nemá metodu Delete, ale můžeme požadovanou metodu zadat jako řetězec. Odešle se na server, hlavní je, že je schopen tuto metodu zpracovat a spustit a WebDAV server, jak víme, toho umí.

V tomto případě je také lepší použít konstrukci try/catch k zachycení výjimky, která může nastat kvůli absenci objektu, který má být odstraněn.

Stahování souboru

Chcete-li stáhnout soubor z cloudového úložiště pomocí protokolu WebDAV, nemusíte se stávajícím kódem příliš manipulovat. Nejprve však nahrajte soubor do cloudu pomocí standardních prostředků (přes webové rozhraní nebo desktopového klienta Yandex). Podle plánu při stahování souboru do čtvrtého (dolního) vstupního pole zadáme název souboru, který chceme stáhnout. Stejný název přiřadíme výslednému souboru na lokálním počítači. Vezměte prosím na vědomí, že na serveru můžeme zadat /Software/file.txt a získáme přístup k souboru ve složce Software, ale složka nebude automaticky vytvořena v místním systému souborů, takže je nutné ji nejprve vytvořit. Zkrátka si stáhneme soubor ZuneSetupPkg.exe (nepostradatelný nástroj pro práci s Windows Phone, který se často musí dodatečně instalovat na cizí počítače, takže ho mám vždy po ruce – v cloudu) z kořene Yandexu .Disk do adresáře se spustitelným souborem.

V handleru pro kliknutí na tlačítko Stáhnout po inicializaci proměnných, vytvoření objektu požadavku a nastavení Credentials nastavte typ metody: GET (číslo viz zdroj v materiálech). Poté, co obdržíme odpověď serveru (objekt třídy HttpWebResponse), deklarujeme proměnné pro čtení dat:

Int byteTransferRate = 8192 // Velikost vyrovnávací paměti byte bytes = nový byte // Vyrovnávací paměť int bytesRead = 0;

long totalBytesRead = 0;

long contentLength = long.Parse(response.GetResponseHeader("Content-Length"));

V posledním řádku kódu načteme velikost souboru z hlavičky odpovědi ze serveru a uložíme ji do proměnné. Dále vytvoříme souborový proud pro zápis souboru na disk:

FileStream fs = new FileStream(fileToDownload, FileMode.Create, FileAccess.Write);

Poté obdržíme stream ze serveru:

Stream s = response.GetResponseStream();

Čteme z něj data po částech a zapisujeme je do souboru, dokud není co zapisovat:

Tento kód není bez výjimek, které je třeba zachytit, mezi ně patří: (404) soubor nelze najít (na serveru), nelze zapisovat do zadaného umístění a mnoho dalších.

Nahrání souboru na server

Poslední operací, bez které bude naše utilita nekompletní, je nahrání souboru na vzdálený hostitel. Toto je nejvíce „mazaná“ operace. Výše popsané operace nezpůsobily sebemenší potíže, ale tato se ukázala být chladnější! Již jsem řekl, že při použití jiných vývojových nástrojů byly potíže s implementací načítání souborů. A ne všechno bylo v C# hladké. Nejprve se v dokumentaci podíváme na to, na jaký požadavek Yandex čeká na nahrání souboru (obr. 3).

V plnohodnotném programu je nutné nahrát několik souborů najednou (na žádost uživatele), vybrat soubory podle masky, vytvořit hierarchii adresářů a nakonec ošetřit chyby. Abychom netloukli vodu v hmoždíři, toto vše vynecháme a soustředíme se na načtení jednoho zadaného souboru, bez vytváření složek a manipulace s chybami. To vše vám necháme jako domácí úkol. V programu, který jsem připravil, je tedy metoda UpdateFile volána z obslužné rutiny kliknutí na tlačítko, je jí předán název hostitele a název stahovaného souboru, které jsou převzaty z odpovídajících vstupních polí. Začátek samotné metody je podobný těm, které byly popsány výše, ale nyní v hlavičce požadavku odešleme příkaz PUT, který má být proveden serverem, to znamená, že vyjadřujeme přání stáhnout soubor. Pokud jsme se při provádění předchozích požadavků zvlášť nespoléhali na dokumentaci, bude to pro nás tentokrát velmi užitečné: do záhlaví požadavku zahrneme všechna pole doporučená společností Yandex a také některá další. Podívejme se tedy na kód záhlaví a pak diskutujte o problémech:

Request.ContentLength = fileLength;

Hodnoty některých parametrů jsou odvozeny vědeckým šťoucháním. Některé vlastnosti závisí na jiných. Je tedy lepší zakázat trvalé připojení (druhý řádek), protože to vygeneruje výjimku o nemožnosti současného čtení a zápisu do streamu. Další dvě vlastnosti nastavují časový limit pro čtení a zápis do síťového proudu. Hodnota -1 znamená nekonečno. Velikost stahovaného souboru může být neomezeně velká, takže nemůžeme předvídat dobu, kterou bude stahování trvat. Další vlastnost: AllowWriteStreamBuffering je velmi zajímavá, povoluje nebo zakazuje ukládání dat před odesláním. Je-li povoleno, odeslaný soubor se nejprve načte do paměti a teprve poté se nahraje na server. Zvláštností této vlastnosti je, že na některých hostitelích můžete bez problémů nahrát soubor vypnutím ukládání do vyrovnávací paměti, ale na jiných se objeví výjimka o nutnosti ukládání do vyrovnávací paměti. To může být způsobeno některými nastaveními registru nebo komunikace; Nevylučuji ani rozdíly mezi službami. Pokud je povoleno ukládání do vyrovnávací paměti a na server je odeslán velký soubor, může být nedostatek prostředků (výjimka SystemOutOfMemory). Do svého programu můžete přidat zaškrtávací políčko pro povolení nebo zakázání ukládání do vyrovnávací paměti. Pokud je ukládání do vyrovnávací paměti zakázáno, musí být povolen příznak PreAuthenticate (další vlastnost), který odesílá autentizační data spolu s hlavičkou. Další parametr SendChunked (pouze pro Yandex.Disk) umožňuje nahrát soubory předem stanovené velikosti na vzdálený hostitel, na což Dropbox reaguje s výjimkou. Dále uvedeme typ přenášených dat, verzi použitého protokolu (11 znamená 1.1) a počet možných HTTP spojení: není potřeba více než jedno. Zakážeme automatické přesměrování. Chcete-li nastavit následující doporučené pole: „Očekávat: 100-pokračování“, které zahrnuje čekání na odpověď na žádost o stažení, nemůžete použít vlastnost zakomentovaná, musíte použít kód na řádku níže: request.ServicePoint.Expect100Continue = věrný;. Poslední vlastností HTTP hlavičky je maska ​​pro přijaté objekty v našem případě jsou akceptovány libovolné soubory: s libovolným názvem a příponou;

Po vytvoření požadavku potřebujeme obdržet síťový stream, do kterého zaznamenáme data odeslaná na server. Otevřeme také místní soubor pro čtení. Pro dočasné uložení dat načtených ze souboru přidělujeme bajtový buffer; pak ve smyčce začneme číst a odesílat a zapisovat data do proudu. Poté zavřeme síť a proudy souborů obecně jako obvykle. Po obdržení odpovědi ze serveru zkontrolujeme stav HTTP, abychom zjistili, zda se rovná příznaku Vytvořeno, a porovnáme velikost souboru s počtem přenesených bajtů; pokud jsou splněny obě podmínky, tak je přenos úspěšný, jinak je problém.

Výsledky

Tím je vývoj naší užitné hodnoty ukončen. V něm jsme implementovali veškerou plánovanou funkcionalitu – čtyři nejnutnější příkazy, bez kterých se žádný správce správy souborů na vzdáleném hostiteli neobejde. Nevázali jsme se na služby konkrétního hostingu, pomocí jeho API jsme vyvinuli univerzální aplikaci, která komunikuje se serverem pomocí standardního protokolu WebDAV. To umožnilo našemu programu pomocí jednoho kódu připojit se k několika serverům najednou (testoval jsem na Yandex.disk a Dropbox). Jak jsme však viděli, různé služby interpretují a podporují protokol mírně odlišně.

Další vývoj programu nechám na vás V průběhu článku jsem upozorňoval na možná vylepšení: to zahrnuje načítání několika souborů, vytváření hierarchie složek, paralelizaci načítání a mnoho dalšího. Pokud se ponoříte hlouběji do protokolu WebDAV, můžete implementovat další příkazy pro správu obsahu na serveru.

Touto poznámkou vám chci popřát hodně štěstí ve všech vašich snahách a být více venku :). Uvidíme se na stránkách ][!

V tomto článku se podíváme na protokol WebDAV, který vám umožňuje pracovat se soubory na serverech vzdáleného úložiště dat, jako je Yandex.Disk. To je důležité především pro uživatele Linuxu, kterým takové služby ne vždy poskytují speciální klienti. Argumenty ve prospěch WebDAV ale mohou zajímat i uživatele jiných operačních systémů.


Univerzální přístup ke cloudům

Minulý týden jsem dostal další „cloudové flash disky“. Kromě Ubuntu One a Dropboxu poslali své pozvánky a služby Disk Google a Yandex.Disk. Celkem už mám čtyři „cloudové disky“.

A to není limit. Oblíbenými jsou podobné „cloudové služby“ a nechybí například SugarSync, Box a další. Na jedné straně je taková rozmanitost a výběr pro koncového uživatele dobrá. Ale na druhou stranu vyvstávají otázky při práci s velkým množstvím podobných služeb, kdy jich není jedna, ale několik.

Koneckonců, každá služba se snaží uvolnit svého vlastního klienta, aby se integrovala do systému uživatele. A když existuje mnoho takových „flash disků“, pak je nepravděpodobné, že by hojnost takových klientů byla esteticky příjemná. A třeba pro Linux naopak speciální klient nemusí být vůbec.

Jednoduchý závěr je tedy takový, že bych chtěl mít nějaký univerzální způsob integrace „cloudových flash disků“ do systému bez nutnosti instalovat pro každou službu vlastní program.

A touto metodou může klidně být protokol WebDAV. Tento protokol umožňuje pracovat se soubory na vzdáleném serveru a provádět s nimi běžné akce: čtení, zápis, mazání.

Podpora tohoto protokolu je dostupná v mnoha operační systémy - Linux, Windows, Mac OS. Další věcí je, že ne všechny cloudové služby poskytují přístup přes WebDAV. Ale čest a chvála Yandex.Disk, který nejenže poskytl podporu, ale také vybízel k používání protokolu WebDAV. Podívejme se proto na tento protokol blíže.


Co je WebDAV

WebDAV (Web-based Distributed Authoring and Versioning) - rozšíření HTTP protokol, který umožňuje nejen načítat webové stránky do prohlížeče, ale pomocí rozšířené sady příkazů také pracovat se soubory na vzdáleném serveru, a to nejen se soubory. To znamená, že WebDAV je taková náhrada FTP protokoly a SMB.

Protokol také umožňuje provádět pokročilé typy operací – blokování, podporu verzí a práci s metadaty objektů. Je také možné pracovat nejen se soubory, ale také s jinými objekty, například položkami adresáře.


WebDAV a Linux

Jak bylo uvedeno výše, WebDAV je primárně relevantní pro uživatele Linuxu. A podpora protokolu WebDAV v Linuxu byla zavedena už dávno. Tuto podporu lze zajistit jak na úrovni jednotlivých správců souborů, tak na hlubší systémové úrovni pomocí speciálních balíčků.

Nejprve se podívejme, jak připojit prostředek WebDAV ve standardním správci souborů Nautilus. Podívejme se na příklad připojení k Yandex.Disk.

Správce souborů GNOME má vestavěnou podporu pro WebDAV, takže jeho uživatelé nemusí nic instalovat. Měli byste otevřít okno "Soubor - Připojit k serveru" a zde zadat následující údaje:

Server: webdav.yandex.ru
Typ: Zabezpečený WebDAV (HTTPS)
uživatelské jméno: vaše přihlášení do služby
Heslo: heslo ke službě

Poté se „Nautilus“ připojí k „cloudové flash disku“ a vytvoří záložku v postranním panelu spolu s dalšími sekcemi. Ve skutečnosti jsou zdroje připojené Nautilusem umístěny v adresáři ~/.gvfs.

Existuje také klasičtější a univerzálnější způsob montáže „cloudových flash disků“ do systému.

Nejprve nainstalujte balíček davfs2 navržený pro práci s WebDAV:

Sudo apt-get install davfs2

V domovském adresáři vytvoříme adresář pro připojení „cloudového disku“ a nazvěme ho například cloud:

$ mkdir /home/home/cloud

Utilita davfs2 má speciální konfigurační soubor, do kterého si můžete uložit své přihlašovací jméno a heslo, abyste je nemuseli zadávat pokaždé, když připojujete cloudový disk. Chcete-li to provést, napište do souboru /etc/davfs2/secrets speciální řádek se svým uživatelským jménem a heslem pro službu Yandex:

Https://webdav.yandex.ru:443 přihlašovací heslo

Https://webdav.yandex.ru:443 /home/home_directory/cloud davfs uid=user,file_mode=640,dir_mode=755,user,noauto 0 0

Poté se přidáme do skupiny davfs2:

$ sudo usermod -a -G uživatel davfs2

Chcete-li běžnému uživateli umožnit spouštět mount.davfs, spusťte příkaz:

$ sudo chmod 4755 /usr/sbin/mount.davfs

To je vše, nyní lze náš „cloudový disk“ na Yandex připojit jednoduchým příkazem:

$ mount /home/home/cloud

A odpojit:

$ umount /home/home/cloud

Michail ASTAPCHIK




Nahoru