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 发起上传文件、下载文件请求的更多相关文章

  1. 利用SecureCRT上传、下载文件(使用sz与rz命令),超实用!

    利用SecureCRT上传.下载文件(使用sz与rz命令),超实用! 文章来源:http://blog.csdn.net/dongqinliuzi/article/details/39623169 借 ...

  2. Linux--用SecureCRT来上传和下载文件

    SecureCRT下的文件传输协议有以下几种:ASCII.Xmodem.Ymodem.Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由 ...

  3. SecureCRT来上传和下载文件

    引用:https://www.cnblogs.com/zhengyihan1216/p/6260667.html Linux--用SecureCRT来上传和下载文件 SecureCRT下的文件传输协议 ...

  4. 解惑:如何使用SecureCRT上传和下载文件、SecureFX乱码问题

    解惑:如何使用SecureCRT上传和下载文件.SecureFX乱码问题 一.前言 很多时候在windows平台上访问Linux系统的比较好用的工具之一就是SecureCRT了,下面介绍一下这个软件的 ...

  5. SecureCRT上传和下载文件

    SecureCRT上传和下载文件(下载默认目录) SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. ...

  6. 11、只允许在主目录下上传和下载文件,不允许用putty登录

    创建用户xiao,   使其只允许在用户主目录 (/var/www/html)下上传和下载文件,不允许用putty登录 (为了安全起见,不给过多的权限) 1.创建xiao用户 [root@localh ...

  7. 每天一个linux命令(26):用SecureCRT来上传和下载文件

    用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. ...

  8. secureCRT简单上传、下载文件记录

    secureCRT简单上传.下载文件记录: 1)sz下载 -y 覆盖 2)rz上传 -y 覆盖 3)以上两个命令属于安装时包含在“Dial-up Networking Support"组中 ...

  9. 每天一个linux命令(26)--用SecureCRT来上传和下载文件

    用SSH管理Linux 服务器时经常需要远程与本地之间交互文件,而直接使用 SecureCRT 自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmod ...

随机推荐

  1. Jenkins 持续集成测试工具

    一.Jenkins(hudson)流程 创建job 执行job 通知机制 二.两种执行策略 定时执行:每隔一段时间执行一下(适合UI和接口测试的执行) 监控代码库执行:单元测试的执行模式(适合单元测试 ...

  2. K8S(07)交付实战-架构说明并准备zk集群

    k8s交付实战-架构说明并准备zk集群 目录 k8s交付实战-架构说明并准备zk集群 1 交付的服务架构图: 1.1 架构图解 1.2 交付说明: 2 部署ZK集群 2.1 二进制安装JDK 2.1. ...

  3. Gitlab 快速部署及日常维护 (一)

    一.GitLab简介GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务 二.GitLab系统架构git用户的主目录通常是/home/git(~ ...

  4. pillow KeyError: 'WEBP'

    描述 使用pillow库jpg转到webp报错 File "F:\Anaconda\lib\site-packages\PIL\Image.py", line 1983, in s ...

  5. IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)【转】

    同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别? 详细请看下链接: IO ...

  6. Dell Display Manager for Mac

    Dell Display Manager for Mac DDM for macOS solution https://www.dell.com/community/Monitors/DDM-for- ...

  7. 2016 JS 笔试题汇总:

    1 1 1 CS&S(中软国际): 1 JavaScript 循环表达式: 2  JavaScript表达式boolean返回值: 3 网页中的事件/HTML 事件属性/JavaScript ...

  8. Docker In Action

    Docker In Action Docker 实战 https://docs.docker.com/get-started/overview/ Docker Engine Docker Archit ...

  9. qt 向窗口发送消息,键盘输入事件

    #include <windows.h> #include <QtDebug> #include <locale> #include <tchar.h> ...

  10. Flutter: MediaQuery

    Flutter Widget of the Week 使用MediaQuery根据不同的屏幕大小调整应用程序的UI布局. 您还可以使用它根据用户布局首选项进行UI调整. class _MyHomeSt ...