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("\r\n--" + boundary + "\r\n"); request.ContentType = "multipart/form-data; boundary=" + boundary;//内容类型 //3>表单数据模板 //string formdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\";\r\n\r\n{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}\"\r\nContent-Type:{2}\r\n\r\n"; 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("\r\n--" + boundary + "--\r\n"))); 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("\r\n--" + boundary + "--\r\n"); 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);
            }

 

 

 

posted on 2015-12-08 16:34  走过路过ボ不要错过  阅读(947)  评论(0编辑  收藏  举报

导航