(總結1)WinForm中檔案上傳伺服器:WebService
方案一:WebService
簡介:
WinForm都是執行在本地的,而我們的網站一般都是佈署在伺服器上,執行在伺服器上的,所以在網站上面上傳檔案,就好似於儲存檔案到本地。但在WinForm上就不一樣了,本章我們簡單舉一個在WinForm利用WebService上傳檔案到伺服器的方法。
步驟一:
首先們先建立一個WebService服務,該服務包含一個UpdateFile方法,該方法接收兩個byte[]與string型別引數。
該方法非常簡單,就是按照string引數指定的路徑和名稱將byte[]引數值儲存到伺服器,程式碼如下:
[WebMethod(Description = "上傳檔案")]
[Erp7Extension(Compress =true)]
[SoapHeader("header")]
public void UploadFiles(string userID, string fileName, byte[] file)
{
int rst=WsUploadFile(userID, fileName, file);
}
/// <summary>
///
/// </summary>
/// <param name="userId"></param>
/// <param name="fileName">D:\Temp\xx.字尾名</param>
/// <param name="fileContent"></param>
/// <returns></returns>
[WebMethod]
private int WsUploadFile(string userId, string fileName, byte[] fileContent)
{
try
{
//要上傳到webservice釋出的伺服器的D盤中Temp資料夾,且上傳之後的檔名引數fileName
string filePath = @"D:\Temp\" + fileName;
//方式1:
StreamWriter sw = new StreamWriter(filePath);
sw.Write(fileContent);
sw.Close();
//方式2:
File.WriteAllBytes(filePath, fileContent);
return 1;
catch
{
return 0;
}
}
步驟一:
WinForm呼叫,程式碼如下:
/// <summary>
/// WebService上傳
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void simpleButton2_Click(object sender, EventArgs e)
{
string iniPath = DataConvert.ToString(btnOpenDialog.EditValue);
if (iniPath.Length == 0)
{
XtraMessageBox.Show("請選擇要上傳的檔案!");
return;
}
// 要上傳的檔案
FileStream file = new FileStream(iniPath, FileMode.Open, FileAccess.Read);
byte[] bytes = new byte[file.Length];
//讀取檔案儲存到位元組流物件
file.Read(bytes, 0, bytes.Length);
string userID=“admin”;
string fileNewName = "Ws_Ys.rar";
IFtmBasFiles ftmBasfiles = FtmBasFilesFactory.Owner.Create();
ftmBasfiles.UploadFiles(userID, fileNewName, bytes);
}