專案需要,兩台Web伺服器,一台資料庫伺服器,一台圖片伺服器,為此需要把圖片保存到跟Web伺服器不同的另外一台伺服器上,所以決定使用WebService的方法。代碼如下



using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.IO;

 

[WebService(Namespace = "HTTP://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
public Service () {

 

//如果使用設計的元件,請取消注釋以下行
//InitializeComponent();
}

 

[WebMethod(Description = "Web 服務提供的方法,返回是否檔上載成功與否。")]
public bool UploadFile(byte[] fs,string SavePath, string FileName)
{

 

string path = System.Configuration.ConfigurationSettings.AppSettings["PicPath"].ToString();
try
{
//判斷類型
string picName = FileName;
string fileType = "";
fileType = picName.Substring(picName.LastIndexOf("."), picName.Length - picName.LastIndexOf(".")).ToLower();
if (fileType != ".jpg" && fileType != ".gif" && fileType != ".bmp")
{
return false;
}

 

string fullPath = path + "\\" + SavePath;

 

if (!System.IO.Directory.Exists(fullPath))
System.IO.Directory.CreateDirectory(fullPath);



///定義並具現化一個記憶體流,以存放提交上來的位元組陣列。
MemoryStream m = new MemoryStream(fs);

 

///定義實際檔物件,保存上載的檔。
FileStream f = new FileStream(fullPath+"\\" + FileName , FileMode.Create);

 

///把內記憶體裡的資料寫入物理檔
m.WriteTo(f);
m.Close();
f.Close();
f = null;
m = null;
return true;
}
catch
{
return false;
}
}



}



調用方法:
1.專案先引用該WebService,並命名為picWebService
2.使用以下代碼調用

 

HttpPostedFile face = FileUpload.PostedFile;
picWebService.Service picWebService = new picWebService.Service();
int upPhotoLength = face.ContentLength;
byte[] PhotoArray = new Byte[upPhotoLength];
Stream PhotoStream = face.InputStream;
PhotoStream.Read(PhotoArray, 0, upPhotoLength);
picWebService.UploadFile(PhotoArray, FilePath, FileName);
face.InputStream.Close();
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()