實例說明:
WebService的用途越來越廣泛,客戶端程序(交警通)需要將日常上報問題上傳到Web服務端,上報問題中可以包含圖片,但是圖片文件的上傳佔用資源較多,所以單獨開闢一個WebMethod方法供多媒體上傳下載使用。
[WebMethod]
public string UploadMedia(string functionName, byte[] bs) {
string s = "2";
try {
Tools tt = new Tools();
s = tt.SaveMedia(functionName, bs);
if("1".Equals(s)) {
s = "0";//一行數據更新表示保存成功
} else {
s = "1";
}
} catch(Exception e) {
Console.WriteLine(e.ToString());
}
return s;
}
代碼說明:
WebMethod UploadMedia方法用來上傳圖片等多媒體,參數爲functionName和圖片字節流。多媒體文件上傳後,保存到多媒體共享目錄,並添加索引到數據庫表。
根據操作數據庫後影響的行數來判斷是否上傳成功,成功返回0.
/// <summary>
/// 功能:保存多媒體文件並寫入數據庫
/// </summary>
/// <param name="functionName">taskid01_jpg</param>
/// <param name="fileStream">多媒體文件流</param>
/// <returns>返回影響的行數</returns>
public string SaveMedia(string functionName, byte[] bs) {
string returnRow = "0";
try {
//保存多媒體文件
string[] temp = functionName.Split('_');
string id = temp[0].ToString();
string name = temp[1].ToString();
string userid = temp[0].ToString().Substring(8, 3);
string fileName = "E:\\Shares\\"+id+"."+name;
FileInfo fileInfo = new FileInfo(fileName);
if (File.Exists(fileName))
{
File.Delete(fileName);
}
if (!fileInfo.Directory.Exists) {
fileInfo.Directory.Create();
}
FileStream fs = new FileStream(fileName, FileMode.CreateNew, FileAccess.Write, FileShare.None, bs.Length, false);
fs.Write(bs, 0, bs.Length);
fs.Close();
//修改數據表
string sql = "insert into Media (id,name,userid) values ('"+id+"', '"+name+"', '"+userid+"' )";
GetDataFromDB getDataFromDB = new GetDataFromDB();
returnRow= getDataFromDB.UpdateServiceDatasFromTable(sql);
}catch(Exception e){
Console.WriteLine(e.ToString());
}
return returnRow;
}
代碼說明:
保存多媒體文件,並添加數據到數據庫表中。