通过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类进行模拟了。关于它的使用是下文了。

博客地址: http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。http://www.cnblogs.com/wolf-sun/p/4436930.html
时间: 2024-08-02 23:26:45

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

Android上传文件至服务器

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

phonegap拍摄照片并上传文件到服务器

问题描述 phonegap拍摄照片并上传文件到服务器 我们项目是springmvc架构的,我现在写了一个页面,页面要嵌入在别的项目组的app中,现在可以调用phonegap中的摄像头拍摄照片并返回图片在手机中的路径,现在我要用phonegap上传图片到我们的服务器中,我是这么写的 var options = new FileUploadOptions(); options.fileKey="file"; options.fileName=picUrl.substr(picUrl.las

<input type="file" >如何实现上传文件到服务器

问题描述 <input type="file" >如何实现上传文件到服务器 <form method="post" enctype="multipart/form-data" id="UpLoad"> <div> <input type="file" id="upFile" name="upFile"> </div

android 上传文件到服务器

问题描述 android 上传文件到服务器 已知文件存放路径,例如"/sdcard/abc.doc",如何用最简单的语句将其上传到一个网络申请的空间(地址已有),跪求解答,很急!!! 解决方案 Android 上传文件,图片.以及服务器端接收相关. 解决方案二: 不应该先将其变成File对象,完了作为参数传给服务器端吗?服务器端做处理啊..

nginx做文件服务器,怎么设置可以防范别人拿到上传链接后频繁的上传文件到服务器,以托慢服务器的效率

问题描述 nginx做文件服务器,怎么设置可以防范别人拿到上传链接后频繁的上传文件到服务器,以托慢服务器的效率 就怕别人自己新写个页面,用脚本24小时不间断的攻击文件服务器. 解决方案 有专门的硬件防火墙可以识别这种ddos/spam的请求并且封锁的 解决方案二: 加一些认证,或者nginx检查一些参数等.

ftp并发上传文件至服务器

问题描述 ftp并发上传文件至服务器 使用普通电脑配置的FTP服务器,大概会出现十几个同时上传或者下载文件吧,能在服务器端或者客户端程序进行限制,防止不用用户同时上传同一文件吗?

winform程序怎么上传文件到服务器,因为可能涉及外网内网,服务器的地址是一个IP地址,怎么上传求代码

问题描述 想上传文件的服务器,可是地址如果填IP地址,如http://192.168.68.200/就报错这样的URL是不支持的,怎么办?服务器的地址应该写什么,求代码 解决方案 解决方案二:在线等.求代码,求详解!解决方案三:配置一个WCF服务..此服务用于上传文件,然后,在winform里面调用就是了解决方案四:在服务器上配置个ftp啊解决方案五:最简单的就是建个FTP,自己写个FTP类,直接调用就好了...

Android实现上传文件到服务器实例详解_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

急求助:通过HTTP协议上传文件到服务器

问题描述 用VB.NET写一个程序,如何通过HTTP协议上传文件到服务器(IIS),该文件是一个录音文件可能比较大. 解决方案 解决方案二:我也在做这个项目请看www.favnet.cn的公告favchat,里面有构思还有流程图.准备开源如果有意可以相互借鉴思路~~~解决方案三:找http的rfc文档创建一个socket,按照rfc文档规定的格式网上发数据即可.解决方案四:http://d.download.csdn.net/source/426927解决方案五:不明LZ在说什么解决方案六:以后