1. 程式人生 > >(總結1)WinForm中檔案上傳伺服器:WebService

(總結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);
  }