通过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/
博客版权:如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。
分类:
[sharepoint]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2014-04-18 [Json.net]Linq to Json