1:上传文件实例

public void UploadXMLLog(string xmlpath)         {             NameValueCollection nvc = new NameValueCollection();             CookieContainer cookies = new CookieContainer();             nvc.Add("", “”);             ......             string url = "UrlPath";             string res = UploadFile(xmlpath, url, nvc, cookies);         }

2:UploadFile源码

  1  public string UploadFile(string uploadfile, string url, NameValueCollection querystring, CookieContainer cookies, string fileFormName = "file", string contenttype = "multipart/form-data")
2 {
3 if ((fileFormName == null) ||
4 (fileFormName.Length == 0))
5 {
6 fileFormName = "file";
7 }
8
9 if ((contenttype == null) ||
10 (contenttype.Length == 0))
11 {
12 contenttype = "application/octet-stream";
13 }
14 Uri uri = new Uri(url);
15 string boundary = "----------" + DateTime.Now.Ticks.ToString("x");
16 HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(uri);
17 webrequest.CookieContainer = cookies;
18 webrequest.ContentType = "multipart/form-data; boundary=" + boundary;
19 webrequest.Method = "POST";
20 StringBuilder sb = new StringBuilder();
21 sb.Append("--");
22 sb.Append(boundary);
23 sb.Append("\r\n");
24 sb.Append("Content-Disposition: form-data; name=\"");
25 sb.Append(fileFormName);
26 sb.Append("\"; filename=\"");
27 sb.Append(uploadfile);
28 sb.Append("\"");
29 sb.Append("\r\n");
30 sb.Append("Content-Type: ");
31 sb.Append(contenttype);
32 sb.Append("\r\n");
33 sb.Append("\r\n");
34
35 string postHeader = sb.ToString();
36 byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);
37 byte[] boundaryBytes = Encoding.ASCII.GetBytes("--" + boundary + "\r\n");
38 byte[] br = Encoding.ASCII.GetBytes("\r\n");
39 FileStream fileStream = new FileStream(uploadfile, FileMode.Open, FileAccess.Read);
40 long length = postHeaderBytes.Length + fileStream.Length + br.Length;
41 if (querystring != null)
42 {
43
44 StringBuilder sub = new StringBuilder();
45 foreach (string key in querystring.Keys)
46 {
47 sub.Append("--");
48 sub.Append(boundary);
49 sub.Append("\r\n");
50 sub.Append("Content-Disposition: form-data; name=\"");
51 sub.Append(key);
52 sub.Append("\"");
53 sub.Append("\r\n");
54 sub.Append("\r\n");
55 sub.Append(querystring[key]);
56 sub.Append("\r\n");
57 byte[] formitembytes = Encoding.UTF8.GetBytes(sub.ToString());
58 length += formitembytes.Length;
59 }
60 }
61 length += boundaryBytes.Length;
62 webrequest.ContentLength = length;
63 Stream requestStream = webrequest.GetRequestStream();
64 // Write out our post header
65 requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
66
67 // Write out the file contents
68 byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)fileStream.Length))];
69 int bytesRead = 0;
70 while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
71 requestStream.Write(buffer, 0, bytesRead);
72 requestStream.Write(br, 0, br.Length);
73 if (querystring != null)
74 {
75 StringBuilder sub = new StringBuilder();
76 foreach (string key in querystring.Keys)
77 {
78 sub.Append("--");
79 sub.Append(boundary);
80 sub.Append("\r\n");
81 sub.Append("Content-Disposition: form-data; name=\"");
82 sub.Append(key);
83 sub.Append("\"");
84 sub.Append("\r\n");
85 sub.Append("\r\n");
86 sub.Append(querystring[key]);
87 sub.Append("\r\n");
88 byte[] formitembytes = Encoding.UTF8.GetBytes(sub.ToString());
89 requestStream.Write(formitembytes, 0, formitembytes.Length);
90 }
91 }
92 // Write out the trailing boundary
93 requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);
94 webrequest.Timeout = 1000000;
95
96 WebResponse responce = webrequest.GetResponse();
97
98 Stream s = responce.GetResponseStream();
99
100 StreamReader sr = new StreamReader(s);
101
102 string str = sr.ReadToEnd();
103
104
105 fileStream.Close();
106
107 requestStream.Close();
108
109 sr.Close();
110
111 s.Close();
112
113 responce.Close();
114
115 return str;
116
117 }

感谢:外国友人http://blogs.msdn.com/b/johan/archive/2006/11/15/are-you-getting-outofmemoryexceptions-when-uploading-large-files.aspx

C# 使用HttpWebRequest通过PHP接口 上传文件的更多相关文章

  1. C# HttpWebRequest 后台调用接口上传大文件以及其他参数

    直接上代码,包各位看客能用!!! 1.首先请求参数的封装 /// <summary> /// 上传文件 - 请求参数类 /// </summary> public class ...

  2. 使用python或robotframework调multipart/form-data接口上传文件

    这几天调一个multipart/form-data类型的接口,遇到点小阻碍.之前同事有使用urllib库写了个类似的方法实现,比较长,想要改的时候发现不太好使.在网上查找发现用requests库做这个 ...

  3. 使用RestTemplate调用接口上传文件

    场景 接口接受一个文件,缓存在本地,验证文件的完整性及内容,然后将文件上传至云服务器: 下面只写利用RestTemplate将文件上传至云服务器,至于文件上传以及缓存在本地可以参考:JAVA文件上传: ...

  4. java 调用Spring接口上传文件及其他参数填充

    第一步:在Spring配置中添加以下内容 <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> < ...

  5. Jmeter接口上传文件

    一.使用抓包软件抓取该接口,查看参数(图例使用的是charles) 可以看到上传文件的参数名是file1 二.把抓取到的普通参数都放在参数这一栏里,如图所示,不要在意马赛克 三.参数名称写在如图所示的 ...

  6. Android、iOS与Servlet接口上传文件和JSON串的交互

    package etcom.servlet; import java.io.File; import java.io.IOException; import java.sql.Connection; ...

  7. C#调用百度云存储接口上传文件

    因前几日见园子里有人说可以把网站静态文件放在百度上,于是去百度开放平台看了看,发现之前那篇文章不是调的云存储接口啊... 于是自己写了个C#能调百度云存储的例子(百度云开放平台只提供php.java. ...

  8. Feign 接口上传文件

    1)Encoder 配置注入容器 2) public class SpringFormEncoderExtension extends FormEncoder { /** * 使用默认的feign编码 ...

  9. C# HttpClient Post 参数同时上传文件 上传图片 调用接口

    // 调用接口上传文件 using (var client = new HttpClient()) { using (var multipartFormDataContent = new Multip ...

随机推荐

  1. Space Ant---poj1696(极角排序)

    题目链接:http://poj.org/problem?id=1696 题意:给你n个点,然后我们用一条线把它们连起来,形成螺旋状: 首先找到左下方的一个点作为起点,然后以它为原点进行极角排序,找到极 ...

  2. NSMutableAttributedString可变属性字符串的用法

    适用于:当你想对一个字符串中的某几个字符更改颜色,字体... NSString *string = @"今日营养配餐提供热量1800千卡,需要饮食之外额外补充钙10mg,铁20mg,锌9.5 ...

  3. ios 实现版本更新检查

    注:这里网络请求用的是第三方框架:SVHTTPRequest /* 第一步: 根据应用名称搜索应用,然后根据应用绑定的ID在结果中筛选出我们要找的应用,并取出应用的AppID */ - (void)g ...

  4. 实现easyui datagrid在没有数据时显示相关提示内容

    本示例实现easyui datagrid加载/查询数据时,如果没有相关记录,则在datagrid中显示没有相关记录的提示信息,效果如下图所示 本实例要实现如下图所示的效果: 本示例easyui版本为1 ...

  5. http协议 301和302的原理及实现

    一.来看看官方的说法: 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:  301 redirect: 301 代表永久性转移(Permanently Moved) ...

  6. 移动端开发tips

    为什么使用touch click有300sm的延迟 touch支持多点触摸 手势操作

  7. AppCan接入微信并且进行文字分享

    AppCan接入微信并且进行文字分享 接入指引 实现简单的文字分享功能 接入指引 详情请参见:http://newdocx.appcan.cn/index.html?templateId=412 实现 ...

  8. 十二、Java基础---------异常处理机制

    异常 异常 异常就是程序在运行时产生的异常情况. 异常的由来 问题也是现实生活中的具体事物,也可以通过java 类的形式进行描述,并封装成对象.异常就是java 对不正常情况进行描述后的对象的体现. ...

  9. python脚本利用windows计划定时执行

  10. 2015年江西理工大学C语言程序设计竞赛(高级组)

    A 解法:DP+二分 dp[i]=max(dp[i],dp[j]+p[i].v)(i>j) dp[i]表示建立i点之后能够获得的最大值 int n,M; struct node { int l, ...