C# 使用HttpWebRequest通过PHP接口 上传文件
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
转载于:https://www.cnblogs.com/chun6/p/6230868.html
C# 使用HttpWebRequest通过PHP接口 上传文件相关推荐
- 【vue开发问题-解决方法】(九)使用element upload自定义接口上传文件,input多文件上传
[vue开发问题-解决方法](九)使用element upload自定义接口上传文件,input多文件上传 参考文章: (1)[vue开发问题-解决方法](九)使用element upload自定义接 ...
- [WebApi]WebApi通过接口上传文件-单文件 多文件上传 文件下载
WebApi通过接口上传文件 单文件上传(ajax,Form表单都适用) 1.html 2.javascript 3.C# Form表单之单文件上传 1.html 2.javascript 3.C# ...
- tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied
tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied 这是因 ...
- python调用接口上传文件_python接口自动化7-post文件上传
前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type: ...
- python 调用Multipart类型接口上传文件和下载文件
业务场景:工作日常会遇到在网站管理后台中需要上传文件去进行批量导入数据的接口,或者导出数据文件到本地的接口:下面记录上传文件和导出文件的操作方法: 导入数据 import requestsurl = ...
- PostMan测试接口-----上传文件、导出excel
PostMan测试接口实现如下功能: (1)上传文件 (2)导出excel 一.PostMan测试接口实现上传文件 当测试接口需要上传文件时,我们依然可以借助Postman. 1.接口地址填写正确 2 ...
- flask 接口上传文件_Flask干货:Flask数据交换——上传文件
图 | 源网络文 | 5号程序员01 事情是这样的. 有一天五号程序员打算网购一盒巧克力送给自己的女朋友 想必女朋友收到礼物是这样的: 结果商家邮寄来的巧克力中夹着一张纸条: 害!你说气不气人,现在都 ...
- PHP接口上传文件图片详解
简介 PHP在处理POST文件上传使用一个文件上传变量$_FILES 和 $HTTP_POST_FILES(已弃用).相同点:$FILES和$HTTP_POST_FILES包含相同的信息.不同点: ...
- python调用接口上传文件_python上传文件接口
文件的参数组装: ('文件名',"open打开的文件(rb模式打开)",'文件的类型说明') 关于不同的请求参数类型,使用requests的处理: 1.文件上传(Content-T ...
最新文章
- 单例测试模式中【饿汉式】与【懒汉式】的区别
- R 语言中 X11 相关的一些问题
- 【pyQuery】抓取startup news首页
- LINQ技术、EF技术都出来蛮久了,软件开发者、软件公司是否还有必要有自己的代码生成器?...
- 人才市场最吃香四个专业,就业前景好,很容易拿到高薪!
- 解决AndroidManifest.xml file missing方案
- linux下clone一直运行,Linux中vgimportclone命令起什么作用呢?
- CSS 元素的display属性
- MVC Json方法里的一个坑
- JavaScript 将死?
- linux下挂载共享目录,linux下挂载windows的共享目录
- 移动创业者,这么多免费资源,你不要?
- w10计算机名重新启动此计算机后,win10电脑关机后自动重启怎么回事?原因与解决办法...
- Guided Adversarial Attack for Evaluating and Enhancing Adversarial Defenses
- Android App接入支付功能
- 全球智慧城市IOT市场规模报告
- 在 HBuilder X 创建Uni-app项目运行时报错
- 怎么压缩图片 ? 掌握这几种免费压缩图片的方法就够了
- Oracle 10G 64位下载
- 解决IE浏览器下载文件,文件名乱码问题(浏览器历史介绍)
热门文章
- centos7 yum安装docker
- Python Django 自定义Manager重写objects.create()方法代码示例
- Java客户端操作elasticsearch--查询索引库
- SpringMVC简介-传统的Model1和Model2/MVC思想及其优势/Spring MVC的优势
- 用python玩转数据第四周答案_用Python玩转数据_章节答案
- 11寸笔记本电脑推荐_3000-20000元高性价比笔记本电脑推荐 含CPU天梯图、显卡天梯图 2020年11月更新...
- 强化学习4——无模型控制model-free control (On-Policy learning:Sarsa和Off-policy learning:Q-learning)
- LInux命令行参数
- python爬取vip小说章节_python 爬取起点小说vip章节(失败)
- 宝典9.2——海量数据的基本处理方法