Este tópico me intimidou quando me apresentou pela primeira vez, porque, vamos encarar os fatos, um serviço da Web realmente parece que apenas processa XML e objetos serializados essencialmente em um formato de texto. Depois de fazer uma pequena investigação, descobri que realmente não é tão difícil e pode ser usado para uma coisa boa, incluindo interações de plataforma cruzada.
O grande segredo é passar um array de bytes como parâmetro e então usando o BinaryWriter para armazenar os bits em um arquivo. O exemplo a seguir mostra como passar a matriz de bytes, um nome de arquivo e um tipo de arquivo MIME para armazenar o arquivo localmente. Obviamente, o servidor web deve ter permissões de gravação na pasta de destino.
_
Public
Sub
UploadBinaryFile (ByVal
dadosAs
Byte
(),ByVal
fileNameAs
String
, _
ByVal
fileTypeComo
String
)
Dim
extensãoAs
String
='.bin'
Dim
sDestFolderAs
String
=String
.EmptySe
fileType.Equals ('application/pdf'
)Então
extension='.pdf'
Els eIf
fileType.Equals ('image/tiff'
)Então
extension='.tiff'
ElseIf
fileType.Equals ('image/jpeg'
)Então
extension='.jpg'
ElseIf
fileType.Equals ('image/gif'
)Então
extension='.gif'
ElseIf
fileType.Equals ('image/png'
)Então
extension='.png'
ElseIf
fileType.Equals ('image/zip'
)Então
extension='.zip'
Else
extension='.bin'
End
If
'Esta não é uma rotina completa, mas o suficiente para esta demonstração.
Se
fileName.EndsWith (extension)=False
Então
fileName=fileName & extensionFim
If
fileName=sDestFolder & fileNameDim
fsComo
Novo
FileStream (fileName, FileMode.OpenOrCreate)Dim
wComo
Novo
BinaryWriter (fs)Para
iAs
Inteiro
=0Para
data.Length-1w.Write (data (i))Next
w.Close ()fs.Close ()End
Sub