可以使用byte数组来传文件,它在XML中被解析为BASE64格式,但是这种方法通常效率很低.
更好的方法是使用WSE,见http://msdn.microsoft.com/webservices/building/wse/default.aspx,安装后里面有详细的文档告诉你如何进行文件传输.
更好的方法是使用WSE,见http://msdn.microsoft.com/webservices/building/wse/default.aspx,安装后里面有详细的文档告诉你如何进行文件传输.
你说效率低,具体效率如何?我只是想做到象qq那样的及时消息以及偶尔传送文件(而且是在有防火墙,需要用soap的时候才用,一般用tcp) 不知道这样的方式可行否?
Imports System.Web.Services<WebService(Namespace:="http://lucky_elove.www1.dotnetplayground.com/")> _
Public Class Upload
Inherits System.Web.Services.WebService#Region " Web 服务设计器生成的代码 " Public Sub New()
MyBase.New() '该调用是 Web 服务设计器所必需的。
InitializeComponent() '在 InitializeComponent() 调用之后添加您自己的初始化代码 End Sub 'Web 服务设计器所必需的
Private components As System.ComponentModel.IContainer '注意:以下过程是 Web 服务设计器所必需的
'可以使用 Web 服务设计器修改此过程。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
End Sub Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
'CODEGEN: 此过程是 Web 服务设计器所必需的
'不要使用代码编辑器修改它。
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub#End Region <WebMethod()> Public Function UploadFile(ByVal fs() As Byte, ByVal FlName As String) As String
Try
Dim m As New MemoryStream(fs)
Dim f As New FileStream(Server.MapPath(".") + "\" + FlName, FileMode.Create)
m.WriteTo(f)
m.Close()
f.Close()
f = Nothing
m = Nothing
Return "文件已经上传成功。" Catch ex As Exception
Return ex.Message
End Try
End FunctionEnd Class
Public Class Upload1
Inherits System.Web.UI.Page
Protected WithEvents Button1 As System.Web.UI.WebControls.Button#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim f As System.IO.File
Dim fs As System.IO.FileStream
Dim o As New com.dotnetplayground.www1.lucky_elove.Upload()
'file to upload
fs = f.Open("E:\mengxianhui\aspxWeb\Test.Doc", IO.FileMode.Open, IO.FileAccess.Read)
Dim b(fs.Length - 1) As Byte
fs.Read(b, 0, fs.Length)
Response.Write(o.UploadFile(b, "Test.Doc"))
f = Nothing
fs.Close()
Catch ex As Exception
Response.Write(ex.Message)
End Try End SubEnd Class
Imports System.Web.Services
Public Class Upload1
Inherits System.Web.UI.Page
Protected WithEvents Button1 As System.Web.UI.WebControls.Button#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim f As System.IO.File
Dim fs As System.IO.FileStream
Dim o As New com.dotnetplayground.www1.lucky_elove.Upload()
'file to upload
fs = f.Open("E:\mengxianhui\aspxWeb\Test.Doc", IO.FileMode.Open, IO.FileAccess.Read)
Dim b(fs.Length - 1) As Byte
fs.Read(b, 0, fs.Length)
Response.Write(o.UploadFile(b, "Test.Doc"))
f = Nothing
fs.Close()
Catch ex As Exception
Response.Write(ex.Message)
End Try End SubEnd Class
http://expert.csdn.net/Expert/topic/2154/2154799.xml?temp=.7233087
http://expert.csdn.net/Expert/topic/2156/2156978.xml?temp=.6006433