1.上传参数

UploadData()方法可以上传数据参数,需要将所要上传的数据拼成字符。

// 创建一个新的 WebClient 实例.  
  WebClient myWebClient = new WebClient();  
  string postData = "Username=admin&Password=admin";  
  // 注意这种拼字符串的ContentType  
  myWebClient.Headers.Add("Content-Type","application/x-www-form-urlencoded");  
  // 转化成二进制数组  
  byte[] byteArray = Encoding.ASCII.GetBytes(postData);  
  // 上传数据,并获取返回的二进制数据.  
  byte[] responseArray = myWebClient.UploadData(远程服务URI,"POST",byteArray);

2.上传文件

UploadFile()方法可以上传文件,只要获取文件上传文件的地址即可。
  String uriString = "远程服务URI";  
    
  // 创建一个新的 WebClient 实例.  
  WebClient myWebClient = new WebClient();  
    
  string fileName = @"文件地址";  
    
  // 直接上传,并获取返回的二进制数据.  
  byte[] responseArray = myWebClient.UploadFile(uriString,"POST",fileName);

3.上传参数和文件

使用UploadData()方法,把文件拼接成byte[] data数据Post过去,就可以达到同样的效果。

System.IO.FileStream zipfs = new System.IO.FileStream(ZipPath, FileMode.Open, FileAccess.Read);//testdata.zip
byte[] byteZipFile = new byte[zipfs.Length];
zipfs.Read(byteZipFile, 0, Convert.ToInt32(zipfs.Length));
zipfs.Close();
string formStart = "--margin\r\n" +
"Content-Disposition: form-data; name=\"FileData\"; FileName=\"" + ZipName + "\"\r\n" +
"Content-Type: application/octet-stream\r\n\r\n";//; LayerName=\"GDGA_ZD\"
string formEnd = "\r\n--margin--\r\n";
byte[] btStart = Encoding.UTF8.GetBytes(formStart);
byte[] btEnd = Encoding.UTF8.GetBytes(formEnd);
byte[] bytes = new byte[btStart.Length + byteZipFile.Length+ btEnd.Length];
btStart.CopyTo(bytes, 0);
byteZipFile.CopyTo(bytes, btStart.Length);
btEnd.CopyTo(bytes, btStart.Length + byteZipFile.Length);
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
client.Headers.Add("Content-Type", "multipart/form-data; boundary=margin");
client.Headers.Add("ContentLength", bytes.Length.ToString());
client.UploadData(new Uri("你的服务地址"), "POST", bytes);
4.上传多文件(不同类型文件)
同理,使用UploadData()方法,把不同的文件拼接成byte[],再合并 data数据Post过去

例如:

// 生成需要上传的二进制数组
CreateBytes cb = new CreateBytes();
// 所有表单数据
ArrayList bytesArray = new ArrayList();
//zip文件流
FileStream zipfs = new FileStream(ZipPath, FileMode.Open,FileAccess.Read, FileShare.Read);
string ContentType = "application/octet-stream";
byte[] zipfileBytes = new byte[zipfs.Length];
zipfs.Read(zipfileBytes, 0, Convert.ToInt32(zipfs.Length));
bytesArray.Add(cb.CreateFieldData("FileData", ZipPath, ContentType, zipfileBytes));
//xml文件流
FileStream xmlfs = new FileStream(Checkxml, FileMode.Open, FileAccess.Read, FileShare.Read);
string contentType = "text/xml";
byte[] xmlfileBytes = new byte[xmlfs.Length];
xmlfs.Read(xmlfileBytes, 0, Convert.ToInt32(xmlfs.Length));
bytesArray.Add(cb.CreateFieldData("xmlData", Checkxml, contentType, xmlfileBytes));
// 合成所有文件并生成二进制数组
byte[] bytes = cb.JoinBytes(bytesArray);

WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;//定义对象语言
client.Headers.Add("Content-Type", cb.ContentType);
client.Headers.Add("ContentLength", bytes.Length.ToString());
client.UploadData(new Uri("上传服务地址"), "POST", bytes);

webclient上传数据到ashx服务的更多相关文章

  1. webclient上传下载文件

    定义WebClient使用的操作类: 操作类名称WebUpDown WebClient上传文件至Ftp服务: //// <summary> /// WebClient上传文件至Ftp服务 ...

  2. 利用WebClient上传参数及文件流到远程ashx服务

    原文 利用WebClient上传参数及文件流到远程ashx服务 1 思路: WebClient.UploadFile()方法可以上传文件:UploadData()方法可以上传数据参数:如何合二为一既上 ...

  3. 使用WebClient上传文件并同时Post表单数据字段到服务端

    之前遇到一个问题,就是使用WebClient上传文件的同时,还要Post表单数据字段,一开始以为WebClient可以直接做到,结果发现如果先 Post表单字段,就只能获取到字段及其值,如果先上传文件 ...

  4. Amazon MWS 上传数据 (一) 设置服务

    Amazon 上传数据的流程为: 通过 SubmitFeed 操作.加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件.正如亚马逊 MWS的所有提交内容一 ...

  5. 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件

    [源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...

  6. TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]

    TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...

  7. Amzon MWS API开发之 上传数据

    亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...

  8. Amazon MWS 上传数据 (三) 提交请求

    前面介绍了设置服务和构造请求,现在介绍提交请求. 上传数据,查询上传操作的工作状态,和处理上传操作返回的报告操作使用的Amazon API 分别为:SubmitFeed(),FeedSubmissio ...

  9. Amazon MWS 上传数据 (二) 构造请求

    上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同:这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的 ...

随机推荐

  1. spider爬虫练习

    package com.jinzhi.spider; import java.io.BufferedReader;import java.io.IOException;import java.io.I ...

  2. Eclipse插件:Spket

    1,破解文件32bit不适用 java -jar spket-1.6.18.jar:

  3. java开发工具STS的下载及安装

    将下载后的压缩文件解压,在解压后的sts-bundle下的sts-3.9.1RELEASE目录中STS.exe便是可执行程序,用于启动STS,将该文件发送到桌面快捷方式,当我们想使用STS时可以快速的 ...

  4. Overture小课堂之如何演绎钢琴滑音

    在我们学习钢琴和学习使用Overture时,要学习如何弹奏和使用滑音.那么我们先来看看什么是滑音,如何使用钢琴演绎,在Overture里滑音又在哪里呢? 滑音,在音乐术语中通常指一种装饰音和演奏指法. ...

  5. 何给域名配置https证书

    原文链接:https://www.cnblogs.com/ymwang/p/6893105.html http和https的区别就是,后者在网络传输过程中会很安全,原因就是给http安装了SSL证书. ...

  6. 为 pip install 设置 socks5 代理

    参考 How to use pip with socks proxy? 为 pip install 设置 socks5 代理 设置方法: pip install pysocks pip install ...

  7. 关于Redis处理高并发

    Redis的高并发和快速原因 1.Redis是基于内存的,内存的读写速度非常快: 2.Redis是单线程的,省去了很多上下文切换线程的时间: 3.Redis使用多路复用技术,可以处理并发的连接.非阻塞 ...

  8. centos用YUM装mysql笔记

    安装的方法,参考:https://blog.csdn.net/jeffleo/article/details/53559712 注意事项: 1.上面教程中,关于设置密码的地方,SQL语句有误,单引号要 ...

  9. Jenkins之定时构建

    参考文章:https://blog.csdn.net/ZZY1078689276/article/details/77520441 第一个*表示分钟,取值0~59 第二个*表示小时,取值0~23 第三 ...

  10. chordDiagramFromMatrix()函数与circos.link()函数结合绘制箭头线

    chordDiagramFromMatrix(matp2,annotationTrack="grid",                       grid.col = c(re ...