通过WebClient模拟post上传文件到服务器

写在前面

最近一直在研究sharepoint的文档库,在上传文件到文档库的过程中,需要模拟post请求,也查找了几种模拟方式,webclient算是比较简单的方式。

一个例子

这里写一个简单接受post请求的aspx页面,代码如下:

 1 namespace Wolfy.UploadDemo
 2 {
 3     public partial class Default : System.Web.UI.Page
 4     {
 5         protected void Page_Load(object sender, EventArgs e)
 6         {
 7             string fileName = Request.QueryString["url"];
 8             if (!string.IsNullOrEmpty(fileName))
 9             {
10                 Stream st = Request.InputStream;
11                 string fileSavePath = Request.MapPath("~/upload/") + fileName;
12                 byte[] buffer=new byte[st.Length];
13                 st.Read(buffer, 0, buffer.Length);
14                 if (!File.Exists(fileSavePath))
15                 {
16                     File.WriteAllBytes(fileSavePath, buffer);
17                 }
18
19             }
20         }
21     }
22 }

这里使用QueryString接收url参数,使用请求的输入流接受文件的数据。
然后,使用webclient写一个模拟请求的客户端,代码如下:

 1 namespace Wolfy.UploadExe
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             WebClient client = new WebClient();
 8             client.QueryString.Add("url", "1.png");10             using (FileStream fs = new FileStream("1.png", FileMode.Open))
11             {
12                 byte[] buffer = new byte[fs.Length];
13                 fs.Read(buffer, 0, buffer.Length);
14                 client.UploadData("http://localhost:15887/Default.aspx", buffer);
15             }
16
17         }
18     }
19 }

调试状态运行aspx,然后运行exe控制台程序

如果有验证信息,可以加上这样一句话:

1 client.Credentials = new NetworkCredential("用户名", "密码", "域");

总结

由于目前做的项目,移动端app不能提供用户名和密码,必须使用证书进行认证,发现webclient无法支持。就采用HttpWebRequest类进行模拟了。关于它的使用是下文了。

时间: 2024-10-06 00:16:02

通过WebClient模拟post上传文件到服务器的相关文章

WebClient和HttpWebRequest 上传文件

这几天对接淘宝的上传航司政策的接口.对期间出现的问题,以及使用WebClient和HttpWebReques 上传文件进行总结.本文重要信息已使用'*'代替 1.WebClient上传文件 使用UploadFile上传文件,其中fileNamePath为物理路径. public bool UpLoadFile(string fileNamePath,string url) { string timeStamp = DateTime.Now.ToString("YYYY-MM-DD HH:mm:s

C# FTP上传文件至服务器代码

C# FTP上传文件至服务器代码 /// <summary> /// 上传文件 /// </summary> /// <param name="fileinfo">需要上传的文件</param> /// <param name="targetDir">目标路径</param> /// <param name="hostname">ftp地址</param&g

Android中利用HTTP协议实现上传文件到服务器

首先我们需要使用HTTP协议发送数据,我们就要知道HTTP发送上传文件到服务器的时候需要哪些头字段已经相关的配置,请看下图 这是使用浏览器模拟上传文件到服务器时候所发送的请求,我们可以看到它包含了请求头字段和实体部分,但是多了一个---------------------------7da2137580612,它实际上是一条分隔线,用于分隔实体数据的,他在使用分隔实体数据的时候会在前面包含多两个"-"而在结束的时候会在除了在前面都出两个减号"-"之外,还会在末尾都出

利用put上传文件到服务器

#import "KUViewController.h" #import "KUProgress.h" @interfaceKUViewController ()<NSURLSessionTaskDelegate> //下载进度的类,继承UIview @property (weak, nonatomic) IBOutlet  KUProgress *progressView; @end @implementation KUViewController -

本地上传文件到服务器,从服务器下载文件到本地

最近在做项目的时候涉及到了文件的上传.下载,以前学习IO时也没有搞得多清楚,在网上找了些上传下载的例子,然后修改了部分.经测试,上传下载文件暂时能用,下面是上传和下载的方法: 1.本地上传文件到服务器 html代码: <form id="uploadDatumInfo" name="uploadDatumInfo" method="post" enctype="multipart/form-data" target=&q

Android上传文件至服务器(转)

本实例实现每隔5秒上传一次,通过服务器端获取手机上传过来的文件信息并做相应处理:采用Android+Struts2技术. 一.Android端实现文件上传 1).新建一个Android项目命名为androidUpload,目录结构如下: 2).新建FormFile类,用来封装文件信息 package com.ljq.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce

put上传文件的服务器的配置

1,HTTP常见的方法 GET 获取指定资源 POST 2M 向指定资源提交数据进行处理请求,在RESTful风格中用于新增资源 HE A D 获取指定资源头部信息PUT 替换指定资源(不支持浏览器操作) DELETE 删除指定资源   2,配置服务器的put请求方式:   1> n 打开终端p cd /etc/apache2p sudo vim httpd.conf n 在vim中输入p /httpd-dav.conf? 查找httpd-dav.confp 按0将光标移动至行首p 按x将行首的

php上传文件到服务器 (注意权限)

表单<input type="file" name="upload_pic"> php上传文件到服务器,注意需要获取权限: if($_FILES['upload_pic']['size'] > 0) { $file_path=dirname(__FILE__); //文件目录 $file_path=str_replace('\\','/',substr($file_path,0,strpos($file_path,'application'))).

python 上传文件到服务器

def upload(filename): #buld post body data boundary = '--xxxxxxxxxxxxxxxx ' http_url='http://xx.xx.com/upload.php' data = [] data.append('--%s' % boundary) fp=open(filename,'rb') data.append('Content-Disposition: form-data; name="%s"; filename=&