C# 应用 - 使用 HttpClient 发起上传文件、下载文件请求
1. 示例代码
using System;
using System.IO;
using System.Net.Http;
/// <summary>
/// 下载文件
/// </summary>
/// <param name="serverFileName">服务器上文件名 如 close.png</param>
/// <param name="localFileName">要保存到本地的路径全名 如:C://Download/close.png</param>
/// <returns></returns>
public static bool DownLoad(string uri, string localFileName)
{
    var server = new Uri(uri);
    var p = Path.GetDirectoryName(localFileName);
    if (!Directory.Exists(p)) Directory.CreateDirectory(p);
    // 发起请求并异步等待结果
    var httpClient = new HttpClient();
    var responseMessage = httpClient.GetAsync(server).Result;
    if (responseMessage.IsSuccessStatusCode)
    {
        using (var fs = File.Create(localFileName))
        {
            // 获取结果,并转成 stream 保存到本地。
            var streamFromService = responseMessage.Content.ReadAsStreamAsync().Result;
            streamFromService.CopyTo(fs);
            return true;
        }
    }
    else
        return false;
}
/// <summary>
/// 通过webapi上传单张图片文件
/// </summary>
/// <param name="uploadUri">上传路径</param>
/// <param name="FullFileNames">图片文件的字节编码</param>
/// <param name="FileStars">上传文件的保存路径前缀,可null,null则不分文件夹保存</param>
/// <param name="FileNames">上传文件的保存名称</param>
/// <returns></returns>
public static List<UploadFile> UploadImageFiles(string uploadUri, byte[] FullFile, string FileStars, string FileNames)
{
    // 判断传入参数是否正确
    if (string.IsNullOrEmpty(uploadUri) || FullFile == null || FileNames == null)
    {
        Common.WriteLog.Error("上传文件时传入参数异常");
        return null;
    }
    // 上传服务uri
    var clineturi = new Uri(uploadUri);
    using (var client = new HttpClient())
    {
        client.Timeout = new TimeSpan(0, 0, 0, 0, Common.RESTTimeOut);
        // 以MultipartFormData格式上传
        using (var content = new MultipartFormDataContent())
        {
            // 文件往content添加一条ByteArrayContent
            // 发送二进制内容
            var fileContent = new ByteArrayContent(FullFile);
            // 设置上传后保存的前缀路径和文件名称(文件名称如果重复会特殊处理)
            fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
            if (FileStars != null) fileContent.Headers.ContentDisposition.FileNameStar = FileStars;
            fileContent.Headers.ContentDisposition.FileName = FileNames;
            content.Add(fileContent);
            try
            {
                // 上传文件,获取返回的字符串内容
                var result = client.PostAsync(clineturi, content).Result.Content.ReadAsStringAsync().Result;
                return Newtonsoft.Json.JsonConvert.DeserializeObject<List<UploadFile>>(result);
            }
            catch (Exception ex)
            {
                Common.WriteLog.Error(string.Format("上传文件出错!uri={0},FullFileNames={1}", uploadUri, FileStars.ToString()), ex);
                return null;
            }
        }
    }
}
2. Http 系列
2.1 发起请求
使用 HttpWebRequest 发起 Http 请求:https://www.cnblogs.com/MichaelLoveSna/p/14501036.html
使用 WebClient 发起 Http 请求 :https://www.cnblogs.com/MichaelLoveSna/p/14501582.html
使用 HttpClient 发起 Http 请求:https://www.cnblogs.com/MichaelLoveSna/p/14501592.html
使用 HttpClient 发起上传文件、下载文件请求:https://www.cnblogs.com/MichaelLoveSna/p/14501603.html
2.2 接受请求
使用 HttpListener 接受 Http 请求:https://www.cnblogs.com/MichaelLoveSna/p/14501628.html
使用 WepApp 接受 Http 请求:https://www.cnblogs.com/MichaelLoveSna/p/14501612.html
使用 WepApp 处理文件上传、下载请求:https://www.cnblogs.com/MichaelLoveSna/p/14501616.html
C# 应用 - 使用 HttpClient 发起上传文件、下载文件请求的更多相关文章
- 利用SecureCRT上传、下载文件(使用sz与rz命令),超实用!
		利用SecureCRT上传.下载文件(使用sz与rz命令),超实用! 文章来源:http://blog.csdn.net/dongqinliuzi/article/details/39623169 借 ... 
- Linux--用SecureCRT来上传和下载文件
		SecureCRT下的文件传输协议有以下几种:ASCII.Xmodem.Ymodem.Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由 ... 
- SecureCRT来上传和下载文件
		引用:https://www.cnblogs.com/zhengyihan1216/p/6260667.html Linux--用SecureCRT来上传和下载文件 SecureCRT下的文件传输协议 ... 
- 解惑:如何使用SecureCRT上传和下载文件、SecureFX乱码问题
		解惑:如何使用SecureCRT上传和下载文件.SecureFX乱码问题 一.前言 很多时候在windows平台上访问Linux系统的比较好用的工具之一就是SecureCRT了,下面介绍一下这个软件的 ... 
- SecureCRT上传和下载文件
		SecureCRT上传和下载文件(下载默认目录) SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. ... 
- 11、只允许在主目录下上传和下载文件,不允许用putty登录
		创建用户xiao, 使其只允许在用户主目录 (/var/www/html)下上传和下载文件,不允许用putty登录 (为了安全起见,不给过多的权限) 1.创建xiao用户 [root@localh ... 
- 每天一个linux命令(26):用SecureCRT来上传和下载文件
		用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. ... 
- secureCRT简单上传、下载文件记录
		secureCRT简单上传.下载文件记录: 1)sz下载 -y 覆盖 2)rz上传 -y 覆盖 3)以上两个命令属于安装时包含在“Dial-up Networking Support"组中 ... 
- 每天一个linux命令(26)--用SecureCRT来上传和下载文件
		用SSH管理Linux 服务器时经常需要远程与本地之间交互文件,而直接使用 SecureCRT 自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmod ... 
随机推荐
- Django实现文件上传
			一.HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ... 
- docker的底层-隔离的核心
			在了解底层原理之前: 说几个名词: 解耦状态: 所有东西都没有重复,任何东西都没有公用的地方. 半解耦状态:有部分共同的一起用,其他的独立 完全解耦状态: 就是各自都是独立没有重复. kvm:完全解耦 ... 
- codeforces 1076E  Vasya and a Tree 【dfs+树状数组】
			题目:戳这里 题意:给定有n个点的一棵树,顶点1为根.m次操作,每次都把以v为根,深度dep以内的子树中所有的顶点(包括v本身)加x.求出最后每个点的值为多少. 解题思路:考虑到每次都只对点及其子树操 ... 
- HDU 3247 Resource Archiver(AC自动机 + 状压DP + bfs预处理)题解
			题意:目标串n( <= 10)个,病毒串m( < 1000)个,问包含所有目标串无病毒串的最小长度 思路:貌似是个简单的状压DP + AC自动机,但是发现dp[1 << n][ ... 
- how to use brew install gpg
			how to use brew install gpg https://formulae.brew.sh/formula/gnupg $ brew install gnupg https://gith ... 
- Free Video Player All In One
			Free Video Player All In One VLC media player https://github.com/videolan/vlc VideoLAN https://www.v ... 
- how to disabled prefers-color-scheme in js & dark theme
			how to disabled prefers-color-scheme in js dark theme https://developer.mozilla.org/en-US/docs/Web/C ... 
- gradient text & gradient background
			gradient text & gradient background -webkit-text-fill-color & -webkit-gradient https://wesbo ... 
- html fragment & svg remove xml namespace
			html fragment & svg remove xml namespace https://developer.mozilla.org/en-US/docs/Web/API/Docume ... 
- C++算法代码——[TYVJ]单数?双数?
			题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1178 题目描述 Bessie那惨无人道的二年级老师搞了一个有 N (1 < ... 
