實際情況一般有單獨的站點存放靜態文件,比如圖片、office文檔等。A站點的操作需要上傳文件到B站點,
下面介紹一種方法通過System.Net.WebClient類的UploadData方法 。
uploadFile.aspx html:
<form id="form1" runat="server"> <div> <asp:FileUpload runat="server" ID="fileUp" AllowMultuploadFile.cs 后臺代碼
PRotected void btnLoad_Click(object sender, EventArgs e) { if (fileUp.HasFile) { var list = fileUp.PostedFiles; foreach (var item in list) { string fileDoc = System.IO.Path.GetExtension(item.FileName).ToLower(); //后綴名 int fileLength = (int)item.InputStream.Length;//InputStream.Length; byte[] byteFile = new byte[fileLength]; item.InputStream.Read(byteFile, 0, fileLength); item.InputStream.Seek(0, System.IO.SeekOrigin.Begin); //讀取流之后設置設置當前流的位置,因為md5加密也需要用到該流 string md5Value = Com.MD5.MyMD5.getMd5Hash(item.InputStream); //得到上傳文件流的MD5string url = string.Format("http://localhost:4884/SaveFile.ashx?name=" + md5Value + "&ext=" + fileDoc); //保存流的處理文件路徑 System.Net.WebClient wc = new System.Net.WebClient(); byte[] bts = wc.UploadData(url, "POST", byteFile); wc.Dispose(); string filePath = System.Text.Encoding.UTF8.GetString(bts); //獲取SaveFile.ashx返回 } } }Com.MD5.MyMD5.getMd5Hash方法請看:我的C# MD5摘要算法、哈希算法SaveFile.ashx 處理程序/// <summary> /// SaveFile 的摘要說明 /// </summary> public class SaveFile : IHttpHandler { public void ProcessRequest(HttpContext context) { lock (context.Request.InputStream) { HttpRequest Request = context.Request; string path = ""; string filenName = ""; string re = ""; if (Request.HttpMethod.ToLower() == "post") { try { using (Request.InputStream) { string name = Request["name"]; string s = Request["ext"]; byte[] bytes = new byte[Request.InputStream.Length]; Request.InputStream.Read(bytes, 0, bytes.Length); Request.InputStream.Seek(0, SeekOrigin.Begin);//設置當前流的位置 //Request.InputStream.Position = 0; Request.InputStream.Flush(); Request.InputStream.Close(); Request.InputStream.Dispose(); Random rnd = new Random(); int n = rnd.Next(1000, 9999); //filenName = "/file/" + n.ToString() + "-" + DateTime.Now.ToString("yyyyMMddHHmmssss") + s; filenName = "/file/"+name + s; path = context.Server.MapPath(filenName); FileStream fs = new FileStream(path, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); bw.Write(bytes); bw.Close(); fs.Close(); re = filenName; //System.Threading.Thread.Sleep(500); } } catch (Exception ex) { } } context.Response.ContentType = "text/plain"; context.Response.Write(re); context.Response.End(); } } public bool IsReusable { get { return false; } } }
新聞熱點
疑難解答