winform客戶端上傳文件到服務器,後臺發送請求,及文件讀取

網上看到相關例子,但是不簡介,這裏貼出來,隨時又需要再看看

背景:開發一個客戶端winform打電話錄音的功能,錄音文件保存在本地,需要上傳到服務器,提供網站

查看使用

winform端 發送

 public void PostMusicToServer( string voiceurl) {
            string tst = voiceurl;
            FileStream fs = new FileStream(voiceurl, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);
            byte[] bytes = br.ReadBytes((int)fs.Length);
            br.Close();
            fs.Close();
            fs.Dispose();
            // 將文件流加入到請求的文件流當中
            string voice2serverurl = ConfigurationManager.ConnectionStrings["voice2serverurl"].ConnectionString + "&filename=" + voiceurl_server;
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(voice2serverurl);//voice2serverurl
            req.Method = "POST";
            req.ContentLength = bytes.Length;
            using (Stream reqStream = req.GetRequestStream())
            {
                reqStream.Write(bytes, 0, bytes.Length);
                reqStream.Close();
            }
            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
            Stream stream = response.GetResponseStream(); 
            string res = new StreamReader(stream, System.Text.Encoding.Default).ReadToEnd();
            if (res=="ok")
            {
                 if (File.Exists(voiceurl))
                {
                    File.Delete(voiceurl);
                }
            }
        }

網站端接收:

 public void voice2server() {
            try
            {
                StreamToFile(Request.InputStream, Request["filename"]);                
                Response.Write("ok");
            }
            catch (Exception e)
            {
                Response.Write(e.Message);
                throw;
            }           
        }
        /// <summary> 
        /// 將 Stream 寫入文件 
        /// </summary> 
        public void StreamToFile(Stream stream,string fileName) 
        { 
            // 把 Stream 轉換成 byte[] 
            byte[] bytes = new byte[stream.Length]; 
            stream.Read(bytes, 0, bytes.Length); 
            // 設置當前流的位置爲流的開始 
            stream.Seek(0, SeekOrigin.Begin); 
            // 把 byte[] 寫入文件 
            FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
            BinaryWriter bw = new BinaryWriter(fs); 
            bw.Write(bytes); 
            bw.Close(); 
            fs.Close(); 
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章