Asp.Netアップロードファイルバックグラウンドはバイナリストリームを介して他のUrl保存に送信

11182 ワード

実際には、画像、officeドキュメントなど、個別のサイトに静的ファイルが格納されます.Aサイトの操作はBサイトにファイルをアップロードする必要があります.
次に、システムを介した方法を説明する.Net.WebClientクラスのUploadDataメソッド.
 
uploadFile.aspx html:
<form id="form1" runat="server">

    <div>

        <asp:FileUpload runat="server" ID="fileUp" AllowMultiple="true" /> 

        <asp:Button runat="server" ID="btnLoad" Text="Upload" OnClick="btnLoad_Click" />

    </div>

    </form>

uploadFile.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.getMd5HashC#MD 5サマリアルゴリズム、ハッシュアルゴリズム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;

            }

        }

    }