Makale Özeti

Web Servislerini kullanarak dosya transfer ve listeleme örnekleri

Makale

Merhabalar,

Makalenin bu kısmında ilk kısımda yazmış olduğumuz web servisinin kullanımının normal parametre yollama yönteminden daha farklı olan iki metodunun kullanımı ile ilgili örnekleri görsel bir biçimde inceleyeceğiz.
         Uygulama 1 : Web Service İle Dosya Upload

         Bir tane web uhygulaması yaratıyoruz. Bu uygulamada Solution Explorer penceresinde referencese sağ tıklayarak Add web reference seçeneğini seçiyoruz. Bir web servisini projemizde kullanabilmek için o servisi web referans olarak eklememiz gerekmektedir.


         Bundan sonraki adımda karşımıza çıkan pencereden lokal makinamızda bulunan bir web servisi kullanacağımızdan Web Services On The Local Machine seçeneğini seçiyoruz.


         Karşımıza makinamızda bulunan web servisleri geliyor ve bunların arasından Web Servisimize vermiş olduğumuz ismi seçiyoruz(bu uygulamada Service1 dir.). Ancak dikkat edilmesi gerekn husus web servisimizin http://localhost/WebservisProjesi/ServisIsmi.asmx şeklinde olmasıdır.


         Referans ekleme penceresinin son adımında karşımıza Web Servisimizin metodlarını gösteren bir pencere geliyor. Sağ taraftan projemizde Web Servisimize vereceğimiz ismi yazıyoruz ve Add Reference tuşuna basıyoruz.


         Web Servisimiz projemize eklendi. Bundan sonra web servisimizde herhangi bir değişiklik yaptığımızda web servisi yeniden Build edip,Referansın üzerine gelerek update web referans dememiz yeterli olacaktır.

         Web uygulamamızdaki Formun HTML kısmında body nin içinde form tagının içini aşağıdaki gibi yazıyoruz.

         Klasör İsmi :<asp:TextBox id="txtFolder" runat="server"></asp:TextBox><br>
         Dosya İsmi :<asp:TextBox id="txtFile" runat="server"></asp:TextBox><br>
         Yüklenecek Dosya : <INPUT type="file" id="file" runat="server"><br>
         <asp:Button id="Button1" runat="server" Text="Gönder"></asp:Button>
         Burada kullanıcıdan dosyanın yükleneceği klasörü,dosyanın yüklendikten sonra alacağı ismi ve yüklemek istediği dosyayı alıyoruz ve gönder tuşuna basıldığı anda codebehind da işleme başlıyoruz.
         Codebehind dosyamızı ise aşağıdaki gibi yazıyoruz.

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Dim ftp As New WebServiceIleFtp.Service1
      Dim FileLen As Integer
      Dim oFile As HttpPostedFile
      Dim oStream As Stream

      Dim sFileNameSplit() As String
      oFile = file.PostedFile
      FileLen = oFile.ContentLength
      Dim oFileByte(FileLen) As Byte

      oStream = oFile.InputStream
      oStream.Read(oFileByte, 0, FileLen)
      ftp.UploadFile(txtFile.Text, txtFolder.Text, oFileByte)
   End Sub
         Burada ise kullanıcının seçtiği dosyayı alıp byte cinsinden bir diziye atıyoruz,bu diziyi ve yükleneceği klasör ile dosya ismini web servisine gönderiyoruz.Burada çok önemli bir nokta web servisimiz ile belirtilen klasöre yazma iznimizin olup olmamaısıdır. Mutlaka web servisimizin kullandığı kullanıcıya bilgisayarımızda belirtilen klasöre yazma izninin verilmiş olması gerekmektedir.

         Uygulama 2 : Web Service İle Dosya Download Ve Silme

         Bir tane windows uygulaması yaratıyoruz. Bu uygulamada Solution Explorer penceresinde referencese sağ tıklayarak Add web reference seçeneğini seçiyoruz. Bir web servisini projemizde kullanabilmek için o servisi web referans olarak eklememiz gerekmektedir. Bunun nasıl yapılacağını bir önceki uygulamada detaylı incelemiştik.
         Yarattığımız uygulamada windows formunun dizaynını aşağıdaki resimdeki gibi yapıyoruz.


İndir butonunun click olayını aşağıdaki gibi düzenliyoruz.


   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Dim ftp As New WebServiceIleFtp.Service1
      Dim ofile() As Byte
      ofile = ftp.DownloadFile(TextBox1.Text, TextBox2.Text)
      Dim objFileStream As FileStream
      Dim sfd As New SaveFileDialog
      sfd.ShowDialog()
      objFileStream = File.Open(sfd.FileName, FileMode.Create, FileAccess.Write)
      Dim lngLen As Long = ofile.Length - 1
      objFileStream.Write(ofile, 0, CType(lngLen, Integer))
      objFileStream.Close()
   End Sub
         Burada ise yaptığımız iş web servise klasör ve dosya ismini gönderdikten sonra geriye dönen byte dizisini aynı dosya upload işleminde web servis kısmınd ayaptığımız şekilde birleştirmektir. Ancak burada dosyanın oluşturulacağı klasörü kullanıcıdan Save File Dialog yolu ile alıyoruz.
         Dosyayı Silmek içinde Sil butonunun click olayına aşağıdaki kodu yazıyoruz.

   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      Dim ftp As New WebServiceIleFtp.Service1
      Dim result As Boolean
      result = ftp.DeleteFile(TextBox1.Text, TextBox2.Text)
      If result = True Then
         MessageBox.Show("Dosya Başarıyla Silindi")
      Else
         MessageBox.Show("Dosya Bulunamadı")
       End If
   End Sub
         Bu kısımda ise kullanıcın belirttiği klasördeki belirtilen dosya varsa siliyor ve true değerini döndürüyor dosya yoksa false değerini döndürüyor.

         Web servisin diğer metodlarını kullanarak belirli bir klasör içindeki dosyalara ve klasörlerin isimlerine erişip listelemek mümkün olacaktır.

Tamer ÖZ

oztamer@hotmail.com
tamer.oz@yazgelistir.com
oztamer@hotmail.com