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 = ;
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等)的更多相关文章
- 关于HttpWebRequest上传文件
我们web 操作离不开 http请求响应 HttpWebRequest上传文件也是一样的道理 下面码一些代码: private void UploadFile(string strRequestUri ...
- HTTPWebrequest上传文件--Upload files with HTTPWebrequest (multipart/form-data)
使用HTTPWebrequest上传文件遇到问题,可以参考Upload files with HTTPWebrequest (multipart/form-data)来解决 https://stack ...
- C#在WinForm下使用HttpWebRequest上传文件
转自:http://blog.csdn.net/shihuan10430049/article/details/3734398 这段时间因项目需要,要实现WinForm下的文件上传,个人觉得采用FTP ...
- [转]C#在WinForm下使用HttpWebRequest上传文件并显示进度
/// <summary> /// 将本地文件上传到指定的服务器(HttpWebRequest方法) /// </summary> /// <param name=&qu ...
- 上传读取Excel文件数据
/// <summary> /// 上传读取Excel文件数据 /// 来自http://www.cnblogs.com/cielwater /// </summary> // ...
- C# 使用HttpWebRequest通过PHP接口 上传文件
1:上传文件实例 public void UploadXMLLog(string xmlpath) { NameValueCollection nvc = ne ...
- .NET 客户端上传本地excel文件到服务器上,并在客户端显示
// 上传按钮 protected void btnUp_Click(object sender, EventArgs e) { bool b = Upload(fuExcel); // 上传exce ...
- springMVC从上传的Excel文件中读取数据
示例:导入客户文件(Excle文件) 一.编辑customer.xlsx 二.在spring的xml文件设置上传文件大小 <!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1 ...
- ASP.NET上传文件到远程服务器(HttpWebRequest)
/// <summary> /// 文件上传至远程服务器 /// </summary> /// <param name="url">远程服务地址 ...
随机推荐
- Oracle语句块PL/SQL循环判断
- --pl/sql Procedural Language /sql --被数据库编译保存,由用户调用 --程序块 /* 语法 Declare – 声明变量 --声明变量 Age int; //没有 ...
- 用Java来比较JavaScript的一些特性
由于是从java做到JavaScript,所以对强弱语言类型,还是比较敏感的.JavaScript是弱语言,只严格区分数据和指令.简单描述下自己对两者之间的一些区别吧. 1.JavaScript变量的 ...
- 使用Flex 和 Red5开发简单视频直播功能
Flex 是一个高效.免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AIR, 可以实现跨浏览器.桌面和操作系统.虽然只能使用 ...
- LeetCode-Divdend two Integers
题目: Divide two integers without using multiplication, division and mod operator. 思路分析 二分法.将除数不断增倍,而结 ...
- IFS解惑
一.IFS 介绍 Shell 脚本中有个变量叫 IFS(Internal Field Seprator) ,内部域分隔符.完整定义是The shell uses the value stored in ...
- CentoS7装机
按delete进入BIOS 选择UEFI 网上关于CentOS 7 的安装教程挺多的,但在前期的引导配置上很多都没有写清楚,让人很郁闷,以致于昨天安装的时候总是到不了安装界面.经过一番胡乱倒腾,终于找 ...
- js 16进制字符串互转
/** * 16进制转换为字符串 * @param hex * @returns {*} */ function hexToString(hex) { var tmp = ''; if (hex.le ...
- C语言函数指针变量和指针函数以及指针数组
C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址.我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数.然后通过指针变量就可以找到并调用这 ...
- 开心菜鸟系列学习笔记-------javascript(3)
一.原型链: 1)Object 是一个属性的集合,并且都拥有一个单独的原型对象.,这个原型对象object可以是一个object或者null值 2)不过一般来说,我们会使用__内部属性名__下 ...
- 【ROC曲线】关于ROC曲线、PR曲线对于不平衡样本的不敏感性分析说引发的思考
ROC曲线 在网上有很多地方都有说ROC曲线对于正负样本比例不敏感,即正负样本比例的变化不会改变ROC曲线.但是对于PR曲线就不一样了.PR曲线会随着正负样本比例的变化而变化.但是没有一个有十分具体和 ...