c# Winform上传文件

http://blog.csdn.net/shihuan10430049/article/details/3734398这个代码有点问题

 

http://blogs.msdn.com/b/johan/archive/2006/11/15/are-you-getting-outofmemoryexceptions-when-uploading-large-files.aspx

 

http://blog.csdn.net/five3/article/details/7181521

Winform代码:

public static void UploadFile(string strFilePath, string strSavePath, string strURL)

        {

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);



            string strBoundry = "------------" + System.DateTime.Now.Ticks.ToString("x");

            // The trailing boundary string

            byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + strBoundry + "\r\n");

            StringBuilder sb = new StringBuilder();

            sb.Append("--");

            sb.Append(strBoundry);

            sb.Append("\r\n");

            sb.Append("Content-Disposition: form-data; name=\"");

            sb.Append("A.txt");

            sb.Append("\"; filename=\"");

            sb.Append(Path.GetFileName(strFilePath));

            sb.Append("\"");

            sb.Append("\r\n");

            sb.Append("Content-Type: ");

            sb.Append("application/octet-stream");

            sb.Append("\r\n");

            sb.Append("\r\n");

            string strPostHeader = sb.ToString();

            byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader);



            // The WebRequest

            HttpWebRequest oWebrequest = (HttpWebRequest)WebRequest.Create(strURL);

            oWebrequest.ContentType = "multipart/form-data; boundary=" + strBoundry;

            oWebrequest.Method = "POST";



            // This is important, otherwise the whole file will be read to memory anyway...

            oWebrequest.AllowWriteStreamBuffering = false;



            // Get a FileStream and set the final properties of the WebRequest

            FileStream oFileStream = new FileStream(strFilePath, FileMode.Open, FileAccess.Read);

            long length = postHeaderBytes.Length + oFileStream.Length + boundaryBytes.Length;

            oWebrequest.ContentLength = length;

            Stream oRequestStream = oWebrequest.GetRequestStream();



            // Write the post header

            oRequestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);



            // Stream the file contents in small pieces (4096 bytes, max).

            byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)oFileStream.Length))];

            int bytesRead = 0;

            while ((bytesRead = oFileStream.Read(buffer, 0, buffer.Length)) != 0)

                oRequestStream.Write(buffer, 0, bytesRead);

            oFileStream.Close();



            // Add the trailing boundary

            oRequestStream.Write(boundaryBytes, 0, boundaryBytes.Length);

            WebResponse oWResponse = oWebrequest.GetResponse();

            Stream s = oWResponse.GetResponseStream();

            StreamReader sr = new StreamReader(s);

            String sReturnString = sr.ReadToEnd();



            // Clean up

            oFileStream.Close();

            oRequestStream.Close();

            s.Close();

            sr.Close();



            //return sReturnString;

 

        }

aspx代码

public partial class Save : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            if (Request.Files.Count > 0)

            {

                try

                {

                    HttpPostedFile file = Request.Files[0];

                    string filePath = this.MapPath("UploadDocument") + "\\" + file.FileName;

                    if (!Directory.Exists(Path.GetDirectoryName(filePath)))

                    {

                        Directory.CreateDirectory(Path.GetDirectoryName(filePath));

                    }

                    file.SaveAs(filePath);

                    Response.Write("Success/r/n");

                }

                catch(Exception ex)

                {

                    Response.Write("Error/r/n");

                }

            }

        }

    }

  亲测可用

你可能感兴趣的:(WinForm)