个人收藏--未整理—C# http/https 上传下载文件

c# HTTP/HTTPS 文件上传。

分类: .net 2015-02-03 08:36 541人阅读 评论(0) 收藏 举报

方法主体

[csharp] view plaincopy

  1. public static string MyUploader(string strFileToUpload, string strUrl, string strFileFormName, NameValueCollection querystring, CookieContainer cookies) 
  2.         { 
  3. string postdata; 
  4.             postdata = "?"; 
  5. if (querystring != null) 
  6.             { 
  7. foreach (string key in querystring.Keys) 
  8.                 { 
  9.                     postdata += key + "=" + querystring.Get(key) + "&"; 
  10.                 } 
  11.             } 
  12. //Uri uri = new Uri(strUrl + postdata);
  13.             Uri oUri = new Uri(strUrl + postdata); 
  14. string strBoundary = "----------" + DateTime.Now.Ticks.ToString("x"); 
  15. // The trailing boundary string
  16. byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + strBoundary + "\r\n"); 
  17. // The post message header
  18.             StringBuilder sb = new StringBuilder(); 
  19.             sb.Append("--"); 
  20.             sb.Append(strBoundary); 
  21.             sb.Append("\r\n"); 
  22.             sb.Append("Content-Disposition: form-data; name=\""); 
  23.             sb.Append(strFileFormName); 
  24.             sb.Append("\"; filename=\""); 
  25.             sb.Append(Path.GetFileName(strFileToUpload)); 
  26.             sb.Append("\""); 
  27.             sb.Append("\r\n"); 
  28.             sb.Append("Content-Type: "); 
  29.             sb.Append("application/octet-stream"); 
  30.             sb.Append("\r\n"); 
  31.             sb.Append("\r\n"); 
  32. string strPostHeader = sb.ToString(); 
  33. byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader); 
  34. // The WebRequest
  35.             HttpWebRequest oWebrequest = (HttpWebRequest)WebRequest.Create(oUri); 
  36. //如果是发送HTTPS请求 
  37. if (strUrl.StartsWith("https", StringComparison.OrdinalIgnoreCase)) 
  38.             { 
  39.                 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); 
  40.                 oWebrequest = WebRequest.Create(oUri) as HttpWebRequest; 
  41.                 oWebrequest.ProtocolVersion = HttpVersion.Version10; 
  42.             } 
  43. else
  44.             { 
  45.                 oWebrequest = WebRequest.Create(oUri) as HttpWebRequest; 
  46.             } 
  47.             oWebrequest.ContentType = "multipart/form-data; boundary=" + strBoundary; 
  48.             oWebrequest.Method = "POST"; 
  49. // This is important, otherwise the whole file will be read to memory anyway...
  50.             oWebrequest.AllowWriteStreamBuffering = false; 
  51. // Get a FileStream and set the final properties of the WebRequest
  52.             FileStream oFileStream = new FileStream(strFileToUpload, FileMode.Open, FileAccess.Read); 
  53. long length = postHeaderBytes.Length + oFileStream.Length + boundaryBytes.Length; 
  54.             oWebrequest.ContentLength = length; 
  55.             Stream oRequestStream = oWebrequest.GetRequestStream(); 
  56. // Write the post header
  57.             oRequestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); 
  58. // Stream the file contents in small pieces (4096 bytes, max).
  59. byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)oFileStream.Length))]; 
  60. int bytesRead = 0; 
  61. while ((bytesRead = oFileStream.Read(buffer, 0, buffer.Length)) != 0) 
  62.                 oRequestStream.Write(buffer, 0, bytesRead); 
  63.             oFileStream.Close(); 
  64. // Add the trailing boundary
  65.             oRequestStream.Write(boundaryBytes, 0, boundaryBytes.Length); 
  66.             WebResponse oWResponse = oWebrequest.GetResponse(); 
  67.             Stream s = oWResponse.GetResponseStream(); 
  68.             StreamReader sr = new StreamReader(s); 
  69.             String sReturnString = sr.ReadToEnd(); 
  70. // Clean up
  71.             oFileStream.Close(); 
  72.             oRequestStream.Close(); 
  73.             s.Close(); 
  74.             sr.Close(); 
  75. return sReturnString; 
  76.         } 

[csharp] view plaincopy

  1. private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) 
  2.         { 
  3. return true; //总是接受 
  4.         } 

调用方法

[csharp] view plaincopy

  1. CookieContainer cookies = new CookieContainer(); 
  2. //add or use cookies 
  3. NameValueCollection querystring = new NameValueCollection(); 
  4. querystring["login_id"] = "your userid"; 
  5. querystring["password"] = "your password"; 
  6. string uploadfile = @"C:\Test.zip";// set to file to upload 
  7. string outdata = MyUploader(filePath, updateUrl, "zipfile", querystring, cookies);
时间: 2024-12-06 16:04:06

个人收藏--未整理—C# http/https 上传下载文件的相关文章

向云服务器上传下载文件方法汇总(转)

转载于:https://yq.aliyun.com/articles/64700 摘要: 一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌面的时候,点"选项>>" 2."本地资源"-->详细信息. 3."磁盘驱动器"前面打钩. 一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌

向linux服务器上传下载文件方式收集

向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 . 命令格式: scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径> 举例: scp /home/work/source.

经验分享] 向云服务器上传下载文件方法汇总

一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌面的时候,点"选项>>" <ignore_js_op> 2."本地资源"-->详细信息. <ignore_js_op> 3."磁盘驱动器"前面打钩. <ignore_js_op> 4.连接远程电脑后,打开"我的电脑",就能看到刚刚共享的硬盘驱动器.把

C#实现http协议支持上传下载文件的GET、POST请求

C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.Collections; using System.IO; using System.Text.RegularExpressions; using RE = System.Text.Regula

rz和sz上传下载文件

安装软件包 yum install? lrzsz ? 上传文件,输入rz选择文件上传(可以按住shift键多选) # rz ? sz 下载文件到本地,选择保存文件夹 # sz dd ? xshell设置默认上传下载文件夹 原文地址:https://www.cnblogs.com/fcing/p/9382377.html

IOUtils方式上传下载文件

package com.css.hdfs04; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration; import org

上传下载文件

上传下载文件 上传: h5中input有个type属性file,可以实现选择文件功能,accept属性可以选择显示的文件类型,默认单选,加个multiple属性可以多选 使用document.querySelector获取,获取的文件信息是不可修改的,如下 // input原生样式略丑,可以隐藏,用自定义节点触发点击事件, <input onchange="" style="display:none;" accept=".png,.jpg"

Linux下不借助工具实现远程linux服务器上传下载文件

# Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## 登录服务器 - `ssh [email protected]` 登录服务器```PC:~$ ssh [email protected][email protected]'s password: ``` ## 文件传输 - 下载文件- `scp [email protected]:/data/log

小小一方士 C# Async\Await 之 上传/下载文件进度条实现原理

关于上传下载文件(图片等),涉及到UI进度条的显示,c#中 System.IProgress提供了相应的api. namespace System { // // 摘要: // 定义进度更新的提供程序. // // 类型参数: // T: // 进度更新值的类型.此类型参数是逆变.即可以使用指定的类型或派生程度更低的类型.有关协变和逆变的详细信息,请参阅 泛型中的协变和逆变. public interface IProgress<in T> { // // 摘要: // 报告进度更新. //