• WinForm 通过HttpWebRequest实现大文件上传


    客户端

            public bool UploadFile(string path, string urlPath, string fileNameguid)
            {
                string url = GetHttpServer() + "/UpFile.aspx?FilePath=" + urlPath + "&FileName=" + fileNameguid;
                // 设置参数
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                CookieContainer cookieContainer = new CookieContainer();
                request.CookieContainer = cookieContainer;
                request.AllowAutoRedirect = true;
                request.Method = "POST";
                string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线
                                                                    // request.ContentType = "text/html";
                request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
                byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("
    --" + boundary + "
    ");
                byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("
    --" + boundary + "--
    ");
                int pos = path.LastIndexOf("\");
                string fileName = path.Substring(pos + 1);
    
                //请求头部信息 
                StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name="file";filename="{0}"
    Content-Type:application/octet-stream
    
    ", fileName));
                byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString());
    
                FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
                byte[] bArr = new byte[fs.Length];
                fs.Read(bArr, 0, bArr.Length);
                fs.Close();
    
                Stream postStream = request.GetRequestStream();
                postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
                postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
                postStream.Write(bArr, 0, bArr.Length);
                postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
                postStream.Close();
    
                HttpWebResponse response;
                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                }
                catch (WebException ex)
                {
                    response = (HttpWebResponse)ex.Response;
                }
    
                //发送请求并获取相应回应数据
                //HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                //直到request.GetResponse()程序才开始向目标网页发送Post请求
                Stream instream = response.GetResponseStream();
                StreamReader sr = new StreamReader(instream, Encoding.UTF8);
                //返回结果网页(html)代码
                string content = sr.ReadToEnd();
                return true; 
     
            }

    服务端  UpFile.aspx.cs

          protected void Page_Load(object sender, EventArgs e)
            {
                if (Context.Request.Files.Count > 0)
                {
                    string filePath = Context.Request["FilePath"];
                    string fileName = Context.Request["FileName"];
                    string SaveDir = System.Web.HttpContext.Current.Server.MapPath(filePath);
                    if (!System.IO.Directory.Exists(SaveDir)) System.IO.Directory.CreateDirectory(SaveDir);
                    HttpPostedFile file = Context.Request.Files[0];
                    if (file.FileName != "")
                    { 
                        SaveDir = System.IO.Path.Combine(SaveDir, fileName);
                        file.SaveAs(SaveDir); 
                    }
                } 
            }

    服务端Web.config配置

      <system.web>
         
        <httpRuntime maxRequestLength="2072576000" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100"/>
         
      </system.web>
      <system.webServer>
           <security>
          <requestFiltering>
            <requestLimits maxAllowedContentLength="2072576000"/>
          </requestFiltering>
        </security>
      </system.webServer>
  • 相关阅读:
    PHP之get请求用php脚本实现
    PHP之download
    PHP之缩略图
    PHP之upload
    文本域<textarea>将 替换成换行
    JSON中获取变量key的值
    emap表格checkbox属性默认勾选
    读取ORACLE数据库中BOLB形式数据在前端预览
    oracle常用语法
    批量删除本地仓库未下载完成的jar文件
  • 原文地址:https://www.cnblogs.com/sbjl/p/11531893.html
Copyright © 2020-2023  润新知