HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Állomány feltöltése web szervizen keresztül


Példaprogram letöltése

16242 bájt

A web szervizek általában adatot szoktak szolgáltatni. Ez viszont nem jelenti azt, hogy nem készíthetnénk olyan web szervizt, mely inkább fogadja az adatokat, sem mint küldi. És ha már fogadja az adatot, akkor ez az adat miért ne lehetne akár egy egész állomány.
Mellékelt példában egy olyan web service-t készítünk, melynek függvényével képesek vagyunk feltölteni egy tetszőleges típusú és méretű állományt a web szervizt futtató szerverre.

A mellékelt példa megnyitása előtt hozzon létre egy UploadFile nevű webes megosztású könyvtárat! (Intézőben jobb gomb az UploadFile mappán, Tulajdonságok menüpont, majd a Webmegosztás lapon engedélyezzük a megosztást.)
A futtatásához szükségessé válhat az alapértelmezésben a C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\CONFIG könyvtárban lévő machine.config állományban a processModel bejegyzésnél a userName attribútum system értékre történő változtatása. Ezek után indítsuk újra a gépet. A system felhasználóval futtatva a rendszerünket, magasabb privilégiumokat kap alkalmazásunk, míg a machine user esetén az ASPNET felhasználóval történik a futtatás, mely alacsonyabb jogokkal rendelkezik.
A web szerviz elkészítése
Készítünk egy UploadFile nevű függvényt, mely két paramétert vár. Az elsőben kell megadnunk egy állomány nevet és elérési útvonalat. A web szervizt futtató gépen ez az állomány kerül létrehozásra és így ide kerül a feltöltött állomány. A második paraméterben egy bájtokat tartalmazó tömböt adunk át, melyben az állomány bájtjai kapnak helyet.
    [WebMethod]
    public string UploadFile(string filename, byte[] file)
    { 
A kapott tömböt egy memória stream-re mentjük, majd létrehozzuk a fizikai állományt.
        MemoryStream ms = new MemoryStream(file);
        FileStream fs = new FileStream(filename, FileMode.Create);
A létrejött új állományba pedig egyszerűen beleírjuk a memória stream tartalmát.
        ms.WriteTo(fs);
        ms.Close();
        fs.Close();
        return "Az állomány feltöltése sikeres volt!";
        ...
A teszt alkalmazás elkészítése
A Web Service elkészülte után fordítsuk le azt, majd hozzunk létre egy Windows-os alkalmazást. Szükségünk lesz egy proxy osztályra, melyen keresztül a Web Service-t könnyedén elérhetjük. Ehhez a WSDL.EXE parancssori alkalmazás segít bennünket. Ha kiadjuk az alábbi utasítást, akkor létrejön egy Service1.cs forráskód, melyben adott lesz a Web Service eléréséhez szükséges objektum.
wsdl http://localhost/UploadFile/Service1.asmx?wsdl
A localhost helyett természetesen más is állhat attól függően, hogy a Web Service hol lett publikálva. A WSDL könnyebb eléréséhez használjuk a Visual Studio.NET Command Prompt-ot.
Ezek után egy állomány feltöltése a web szervizen keresztül a következőképpen zajlik: megnyitunk egy állományt a FileStream osztállyal és beolvassuk azt egy bájtokat tartalmazó tömbbe.
    private void button1_Click(object sender, System.EventArgs e)
    {
      FileStream fs = File.Open("c:\\autoexec.bat", FileMode.Open, FileAccess.Read);
      byte[] b = new byte[fs.Length];
      fs.Read(b, 0, Convert.ToInt32(fs.Length));
Létrehozunk egy új példányt a web szervizből és az UploadFile függvényt meghívva átadjuk a bájtokat tartalmazó tömböt.
      Service1 s = new Service1();
      label1.Text = s.UploadFile("c:\\_autoexec.bat", b);
      fs.Close();
    }     
A teszt alkalmazás futtatása előtt ellenőrizze, hogy a C: meghajtón van-e autoexec.bat állomány. Ha nincs, akkor változtassa meg a forráskódot egy tetszőleges létező állományra.
A példa kipróbálása után a C: meghajtón lévő autoexec.bat kerül feltöltésre a web service-t futtató számítógépre, ahol létrejön egy _autoexec.bat állomány.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 388. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |