非常感谢 ChicagoMike 让我走上正轨。这是我的做法
要从服务传输到客户端的对象:
Imports System.IO
Public Class PictureSender
Public Property PictureBytes As Byte()
Public Property PictureName As String
End Class
客户端上调用其控制器的代码(在我的情况下,linq 和 For 循环很有用,因为我在它们各自的文件夹中有多种类型的图像):
Private Async Sub btnGetPictures_Click(sender As Object, e As RoutedEventArgs)
' Get the list of all categories of picture to go through all folders from local saves.
Dim lstFolders As List(Of String) = (From p In Await ImageController.GetImageDetails Select p.Categorie).Distinct.ToList()
For i = 0 To lstFolders.Count - 1
PicturesController.GetPicturesServer(lstFolders(i))
Next
End Sub
客户端控制器中的代码:
Public Async Sub GetPicturesServer(_folderName As String)
Dim service As New ServiceReference1.Service1Client(ServiceReference1.Service1Client.EndpointConfiguration.BasicHttpBinding_IService1)
Dim rcv = Await service.SelectAllPicturesAsync(_folderName)
' Get the folder
Dim folder = ApplicationData.Current.LocalFolder
folder = Await folder.CreateFolderAsync("Images", CreationCollisionOption.OpenIfExists)
Await folder.CreateFolderAsync(_folderName, CreationCollisionOption.ReplaceExisting)
folder = Await folder.GetFolderAsync(_folderName)
' Run through all pictures and save them
For i = 0 To rcv.Count - 1
Dim myfile As StorageFile = CType(Await folder.CreateFileAsync(rcv(i).PictureName, CreationCollisionOption.ReplaceExisting), StorageFile)
Await Windows.Storage.FileIO.WriteBufferAsync(myfile, rcv(i).PictureBytes.AsBuffer())
Next
服务代码:
Function Execute(TypeOfPictures As String) As List(Of PictureSender)
Dim PicturesinDirectory As List(Of String) = Directory.GetFiles("\\SERVER\Data\Image\" + TypeOfPictures + "\", "*.jpg*").ToList()
Dim lstPicturesToSend As List(Of PictureSender) = New List(Of PictureSender)
For i = 0 To PicturesinDirectory.Count - 1
Dim ByteArray As Byte() = File.ReadAllBytes(PicturesinDirectory(i))
' Affect the PictureSender object
Dim PictureSenderObject As PictureSender = New PictureSender
PictureSenderObject.PictureBytes = ByteArray
PictureSenderObject.PictureName = PicturesinDirectory(i).Substring(PicturesinDirectory(i).LastIndexOf("\") + 1)
lstPicturesToSend.Add(PictureSenderObject)
Next
Return lstPicturesToSend
End Function
这段代码几乎从服务中返回Byte() 和图片名称,然后由客户端使用。客户端使用buffer在文件上写入并重新创建图片