zoukankan      html  css  js  c++  java
  • HttpWebRequest上传文件(Excel等)

       
    //上传代码
    /// <summary> /// 文件上传 /// </summary> /// <param name="strAddress">路径地址,不包括服务地址</param> /// <param name="postedFile"></param> /// <returns></returns> public static IResponseResult HttpPostFile(string strAddress, HttpPostedFile postedFile,string reFileName) { string url = ConfigHelper.GetConfigString("PAOfferSystemAddress") + strAddress; //1>创建请求 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); //2>Cookie容器(保存cookie,只是上传文件,则可以注释掉) //request.CookieContainer = cookieContainer; request.Method = "POST"; request.Timeout = 120000; request.Credentials = System.Net.CredentialCache.DefaultCredentials; request.KeepAlive = true; string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");//分界线 byte[] boundaryBytes = System.Text.Encoding.UTF8.GetBytes(" --" + boundary + " "); request.ContentType = "multipart/form-data; boundary=" + boundary;//内容类型 //3>表单数据模板 //string formdataTemplate = " --" + boundary + " Content-Disposition: form-data; name="{0}"; {1}"; //4>读取流 byte[] buffer = new byte[postedFile.ContentLength]; postedFile.InputStream.Read(buffer, 0, buffer.Length); //5>写入请求流数据 string strHeader = "Content-Disposition:application/x-www-form-urlencoded; name="{0}";filename="{1}" Content-Type:{2} "; strHeader = string.Format(strHeader, "filedata", //postedFile.FileName, reFileName + postedFile.FileName, postedFile.ContentType); //6>HTTP请求头 byte[] byteHeader = System.Text.ASCIIEncoding.UTF8.GetBytes(strHeader); StringBuilder sbBody=new StringBuilder (); sbBody.Append(System.Text.Encoding.UTF8.GetString(boundaryBytes)); sbBody.Append(System.Text.Encoding.UTF8.GetString(byteHeader)); sbBody.Append(System.Text.Encoding.UTF8.GetString(buffer)); sbBody.Append(System.Text.Encoding.UTF8.GetString(System.Text.Encoding.UTF8.GetBytes(" --" + boundary + "-- "))); string headValue = Encrpt(sbBody.ToString());//加密 request.Headers.Add("OfferServiceAuthorization", headValue); request.Headers.Add("CustomID", ConfigurationManager.AppSettings["CustomID"]); try { using (Stream stream = request.GetRequestStream()) { #region 写入请求流(表单数据) //写入请求流(表单数据) //if (null != parameters) //{ // foreach (KeyValuePair<string, object> item in parameters) // { // stream.Write(boundaryBytes, 0, boundaryBytes.Length);//写入分界线 // byte[] formBytes = System.Text.Encoding.UTF8.GetBytes(string.Format(formdataTemplate, item.Key, item.Value)); // stream.Write(formBytes, 0, formBytes.Length); // } //} #endregion //6.0>分界线============================================注意:缺少次步骤,可能导致远程服务器无法获取Request.Files集合 stream.Write(boundaryBytes, 0, boundaryBytes.Length); //6.1>请求头 stream.Write(byteHeader, 0, byteHeader.Length); //6.2>把文件流写入请求流 stream.Write(buffer, 0, buffer.Length); //6.3>写入分隔流 byte[] trailer = System.Text.Encoding.UTF8.GetBytes(" --" + boundary + "-- "); stream.Write(trailer, 0, trailer.Length); //6.4>关闭流 stream.Close(); } string responseContent = ""; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader streamReader = new StreamReader(response.GetResponseStream())) { responseContent = streamReader.ReadToEnd(); response.Close(); request.Abort(); } return JsonConvertHelper.DataContractToModel<IResponseResult>(responseContent); } catch (Exception ex) { throw new Exception(ex.Message); } }

    //服务器代码
       HttpPostedFile file = Context.Request.Files["filedata"];//获取上传文件
                if (null == file || file.ContentLength == 0)
                {
                    IResponseResult responseResult = new IResponseResult();
                    responseResult.Status = ResponseStatus.Fail;
                    responseResult.Message = "Upload file is invalid";
                    //to json返回结果
                    string toJson = JsonConvertHelper.ToJson(responseResult);
                    Response.Write(toJson);
                }
                else
                {
                    string filePath = Server.MapPath("~/File/Excel");
                    if (!Directory.Exists(filePath))//判断文件夹是否存在 
                    {
                        Directory.CreateDirectory(filePath);//不存在则创建文件夹 
                    }
                    file.SaveAs(string.Format("{0}/{1}", filePath, file.FileName));
                    IResponseResult responseResult = new IResponseResult();
                    responseResult.Status = ResponseStatus.Success;
                    string toJson = JsonConvertHelper.ToJson(responseResult);
                    Response.Write(toJson);
                }
    
    
    
     
  • 相关阅读:
    URLLoader和Loader的区别
    linux的文件permission需要设置,否则会使用as3的urlrequest失败
    基于单个xml的数据库
    require_once()
    AS3里只能让动画听下来,不能让声音停下来的问题
    AS3的百条常用知识收藏
    as3读取xml
    21个营销机构网站设计案例
    Web设计者和开发者必备的27个Chrome插件
    DEDE模块MVC框架基本说明,织梦CMSv5.7MVC开发框架
  • 原文地址:https://www.cnblogs.com/keyyang/p/5029527.html
Copyright © 2011-2022 走看看