不多說,直接看代碼:
/*上傳文件的WebService*/ using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services; using System.IO; /// <summary> /// Upload 的摘要說明。 /// </summary> [WebService(Namespace = "http://tempuri.org/", Description = "在Web Services里利用.NET框架進上載文件。")] public class UploadFile : System.Web.Services.WebService { public UploadFile() { } [WebMethod(Description = "Web 服務提供的方法,返回是否文件上載成功與否。")] public string Upload(byte[] fs, string fileType) { string FileName = System.DateTime.Now.ToString("yyyyMMddHHmmssms") +"." +fileType; try { ///定義並實例化一個內存流,以存放提交上來的字節數組。 MemoryStream m = new MemoryStream(fs); ///定義實際文件對象,保存上載的文件。 FileStream f = new FileStream(Server.MapPath(".") + "\\UploadFile\\" + FileName, FileMode.Create); ///把內內存里的數據寫入物理文件 m.WriteTo(f); m.Close(); f.Close(); f = null; m = null; return FileName; } catch (Exception ex) { return null; } } [WebMethod(Description = "Web 服務提供的方法,刪除指定文件")] public void Delete(string fileName) { string filePath = Server.MapPath(".") + "\\UploadFile\\" + fileName; File.Delete(filePath); } } /*下載文件*/ using System; using System.Web; using System.Collections; using System.Web.Services; using System.Web.Services.Protocols; using System.IO; /// <summary> /// GetBinaryFile 的摘要說明。 /// Web Services名稱:GetBinaryFile /// 功能:返回服務器上的一個文件對象的二進制字節數組。 /// </summary> [WebService(Namespace = "http://tempuri.org/", Description = "在Web Services里利用.NET框架進行傳遞二進制文件。")] public class GetBinaryFile : System.Web.Services.WebService { /// <summary> /// Web 服務提供的方法,返回給定文件的字節數組。 /// </summary> [WebMethod(Description = "Web 服務提供的方法,返回給定文件的字節數組")] public byte[] GetFile(string requestFileName) { string fileName = Server.MapPath(".") + "\\UploadFile\\" + requestFileName; return getBinaryFile(fileName); } /// <summary> /// getBinaryFile:返回所給文件路徑的字節數組。 /// </summary> /// <param name="filename"></param> /// <returns></returns> public byte[] getBinaryFile(string filename) { if (File.Exists(filename)) { try { ///打開現有文件以進行讀取。 FileStream s = File.OpenRead(filename); return ConvertStreamToByteBuffer(s); s.Close(); } catch (Exception e) { return new byte[0]; } } else { return new byte[0]; } } /// <summary> /// ConvertStreamToByteBuffer:把給定的文件流轉換為二進制字節數組。 /// </summary> /// <param name="theStream"></param> /// <returns></returns> public byte[] ConvertStreamToByteBuffer(System.IO.Stream theStream) { int b1; System.IO.MemoryStream tempStream = new System.IO.MemoryStream(); while ((b1 = theStream.ReadByte()) != -1) { tempStream.WriteByte(((byte)b1)); } return tempStream.ToArray(); } [WebMethod(Description = "Web 服務提供的方法,返回給定文件類型。")] public string GetImageType() { ///這里只是測試,您可以根據實際的文件類型進行動態輸出 return "image/jpg"; } } /*調用上傳*/ string filePath = "c:\test.jpg"; FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Read); // Read the Data into the Byte Array byte[] fileByte = new byte[fs.Length]; fs.Read(fileByte, 0, (int)fs.Length); UploadFile uploadfile = new UploadFile(); int indexof = filePath.LastIndexOf(".")+1; string fileExt = filePath.Substring(indexof, filePath.Length - indexof); string filename = uploadfile.Upload(fileByte, fileExt);