網上看到相關例子,但是不簡介,這裏貼出來,隨時又需要再看看
背景:開發一個客戶端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();
}