为了账号安全,请及时绑定邮箱和手机立即绑定

使用C#通过HTTP POST发送文件

使用C#通过HTTP POST发送文件

C#
LEATH 2019-08-26 19:20:15
使用C#通过HTTP POST发送文件我一直在寻找和阅读它,并没有任何真正有用的东西。我正在编写一个小型C#win应用程序,允许用户将文件发送到Web服务器,而不是通过FTP,而是通过HTTP使用POST。可以把它想象成一个Web表单,但在Windows应用程序上运行。我使用这样的东西创建了我的HttpWebRequest对象HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest并且还设置了Method,ContentType和ContentLength属性。但那就是我能走的远。这是我的一段代码:HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest;req.KeepAlive = false;req.Method = "POST";req.Credentials = new NetworkCredential(user.UserName, user.UserPassword);req.PreAuthenticate = true;req.ContentType = file.ContentType;req.ContentLength = file.Length;HttpWebResponse response = null;try{     response = req.GetResponse() as HttpWebResponse;}catch (Exception e) {}所以我的问题基本上是如何通过HTTP POST用C#发送文件(文本文件,图像,音频等)。谢谢!
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

发送原始文件:

using(WebClient client = new WebClient()) {
    client.UploadFile(address, filePath);}

如果你想用一个模拟一个浏览器表单<input type="file"/>,那就更难了。有关multipart / form-data答案


查看完整回答
反对 回复 2019-08-26
?
慕森王

TA贡献1777条经验 获得超3个赞

对我来说,client.UploadFile仍然将内容包装在一个多部分请求中,所以我必须这样做:

using (WebClient client = new WebClient()){
    client.Headers.Add("Content-Type", "application/octet-stream");
    using (Stream fileStream = File.OpenRead(filePath))
    using (Stream requestStream = client.OpenWrite(new Uri(fileUploadUrl), "POST"))
    {
        fileStream.CopyTo(requestStream);
    }}


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 3201 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信