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">远程服务地址 ...
随机推荐
- sql 根据时间获取数据
获取当月数据 MONTH(时间字段)=MONTH(GETDATE()) and year(时间字段)=year(GETDATE()) 计算两个时间差了多少分钟 DATEDIFF(mi,'7:00',c ...
- 《第一行代码》学习笔记21-Git
Git(1) 1.Git是一个开源的分布式版本控制工具,其开发者是Linux操作系统的作者Linus Torvalds. 2.仓库(Repository)是用于保存版本管理所需要信息的地方,所有本地提 ...
- 加载gif图过渡效果
加载gif图片,过渡效果: 调用: - (id)initWithGifView:(UIView *)view { self = [super initWithView:view]; if (self) ...
- Objective-C 数组、可变数组
数组的使用方式 下面是数组:类型NSArray #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int ...
- C/C++中的const int*和int * const
代码: #include <iostream> using namespace std; int main(){ const int *p; ; p = &a; a = ; cou ...
- C++ 使用cl命令编辑时发生的问题收录
1.cl不是内部或这外部命令,也不是可运行的程序或批处理文件. 这个问题的出现的原因是因为系统找不到cl命令处理程序,无法识别,解决办法: 首先在C盘查找cl.exe,可能会查到多个,先选择第一个,将 ...
- Unity3D中使用KiiCloud总结一
Kii Cloud简介 Kii Cloud提供一系列的服务,来帮助你为你的App获取用户,留住用户,以及创造利润.它为移动App提供了用户管理以及快捷安全可扩展的数据存储服务. 现在你可以在短短几分钟 ...
- BZOJ 1264 基因匹配Match(LCS转化LIS)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1264 题意:给出两个数列,每个数列的长度为5n,其中1-n每个数字各出现5次.求两个数列 ...
- 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(2)--前端,以及前后端Session
原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(2)--前端,以及前后端Session chsakell分享了前端使用AngularJS,后端使用ASP.NE ...
- java.lang.OutOfMemoryError: unable to create new native thread(转)
解决 - java.lang.OutOfMemoryError: unable to create new native thread 工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文 ...