//上传代码
/// <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 = ;
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, , 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, , boundaryBytes.Length);
//6.1>请求头
stream.Write(byteHeader, , byteHeader.Length);
//6.2>把文件流写入请求流
stream.Write(buffer, , buffer.Length);
//6.3>写入分隔流
byte[] trailer = System.Text.Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
stream.Write(trailer, , 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 == )
{
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);
}

 

HttpWebRequest上传文件(Excel等)的更多相关文章

  1. 关于HttpWebRequest上传文件

    我们web 操作离不开 http请求响应 HttpWebRequest上传文件也是一样的道理 下面码一些代码: private void UploadFile(string strRequestUri ...

  2. HTTPWebrequest上传文件--Upload files with HTTPWebrequest (multipart/form-data)

    使用HTTPWebrequest上传文件遇到问题,可以参考Upload files with HTTPWebrequest (multipart/form-data)来解决 https://stack ...

  3. C#在WinForm下使用HttpWebRequest上传文件

    转自:http://blog.csdn.net/shihuan10430049/article/details/3734398 这段时间因项目需要,要实现WinForm下的文件上传,个人觉得采用FTP ...

  4. [转]C#在WinForm下使用HttpWebRequest上传文件并显示进度

    /// <summary> /// 将本地文件上传到指定的服务器(HttpWebRequest方法) /// </summary> /// <param name=&qu ...

  5. 上传读取Excel文件数据

    /// <summary> /// 上传读取Excel文件数据 /// 来自http://www.cnblogs.com/cielwater /// </summary> // ...

  6. C# 使用HttpWebRequest通过PHP接口 上传文件

    1:上传文件实例 public void UploadXMLLog(string xmlpath)         {             NameValueCollection nvc = ne ...

  7. .NET 客户端上传本地excel文件到服务器上,并在客户端显示

    // 上传按钮 protected void btnUp_Click(object sender, EventArgs e) { bool b = Upload(fuExcel); // 上传exce ...

  8. springMVC从上传的Excel文件中读取数据

    示例:导入客户文件(Excle文件) 一.编辑customer.xlsx 二.在spring的xml文件设置上传文件大小 <!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1 ...

  9. ASP.NET上传文件到远程服务器(HttpWebRequest)

    /// <summary> /// 文件上传至远程服务器 /// </summary> /// <param name="url">远程服务地址 ...

随机推荐

  1. Oracle语句块PL/SQL循环判断

    - --pl/sql Procedural Language /sql --被数据库编译保存,由用户调用 --程序块 /* 语法 Declare – 声明变量 --声明变量 Age int; //没有 ...

  2. 用Java来比较JavaScript的一些特性

    由于是从java做到JavaScript,所以对强弱语言类型,还是比较敏感的.JavaScript是弱语言,只严格区分数据和指令.简单描述下自己对两者之间的一些区别吧. 1.JavaScript变量的 ...

  3. 使用Flex 和 Red5开发简单视频直播功能

    Flex 是一个高效.免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AIR, 可以实现跨浏览器.桌面和操作系统.虽然只能使用 ...

  4. LeetCode-Divdend two Integers

    题目: Divide two integers without using multiplication, division and mod operator. 思路分析 二分法.将除数不断增倍,而结 ...

  5. IFS解惑

    一.IFS 介绍 Shell 脚本中有个变量叫 IFS(Internal Field Seprator) ,内部域分隔符.完整定义是The shell uses the value stored in ...

  6. CentoS7装机

    按delete进入BIOS 选择UEFI 网上关于CentOS 7 的安装教程挺多的,但在前期的引导配置上很多都没有写清楚,让人很郁闷,以致于昨天安装的时候总是到不了安装界面.经过一番胡乱倒腾,终于找 ...

  7. js 16进制字符串互转

    /** * 16进制转换为字符串 * @param hex * @returns {*} */ function hexToString(hex) { var tmp = ''; if (hex.le ...

  8. C语言函数指针变量和指针函数以及指针数组

    C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址.我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数.然后通过指针变量就可以找到并调用这 ...

  9. 开心菜鸟系列学习笔记-------javascript(3)

    一.原型链:     1)Object 是一个属性的集合,并且都拥有一个单独的原型对象.,这个原型对象object可以是一个object或者null值 2)不过一般来说,我们会使用__内部属性名__下 ...

  10. 【ROC曲线】关于ROC曲线、PR曲线对于不平衡样本的不敏感性分析说引发的思考

    ROC曲线 在网上有很多地方都有说ROC曲线对于正负样本比例不敏感,即正负样本比例的变化不会改变ROC曲线.但是对于PR曲线就不一样了.PR曲线会随着正负样本比例的变化而变化.但是没有一个有十分具体和 ...