http request 相关

        private bool Upload(KeyValuePair<string, string>[] paramString,Stream paramFileStream)
{
var actionUrl = $"{_websiteUrl}/********"; byte[] paramFileBytes = new byte[paramFileStream.Length];
paramFileStream.Read(paramFileBytes, 0, paramFileBytes.Length);
// 设置当前流的位置为流的开始
paramFileStream.Seek(0, SeekOrigin.Begin);
Func<Task<bool>> task = async () =>
{
using (var client = CreateHttpClient())
{
using (var formData = new MultipartFormDataContent())
{ foreach (var keyValuePair in paramString)
{
formData.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
}
//var fileContent = new ByteArrayContent(paramFileBytes);
HttpContent fileStreamContent = new StreamContent(paramFileStream);
fileStreamContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
{
Name = "files",
Size = 1,
FileName = "201809.xlsx"
};
fileStreamContent.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
//formData.Add(fileContent, "files");
formData.Add( fileStreamContent, "files", "201809.xlsx");
client.DefaultRequestHeaders.Add("UserToken", _clientAuth.GetToken());
var respMessage = await client.PostAsync(FixUrl(actionUrl), formData).ConfigureAwait(false);
if (!respMessage.IsSuccessStatusCode)
{
return false;
}
//respMessage.EnsureSuccessStatusCode();
Byte[] rawBytes = await respMessage.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
var content = ClientEncoding.GetString(rawBytes, 0, rawBytes.Length);
return true;
}
}
};
return RunSync(task);
}

相关方法

        public static TResult RunSync<TResult>(Func<Task<TResult>> func, bool await = false)
{
CultureInfo cultureUi = CultureInfo.CurrentUICulture;
CultureInfo culture = CultureInfo.CurrentCulture;
return _myTaskFactory.StartNew<Task<TResult>>(delegate
{
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = cultureUi;
return func();
}).Unwrap<TResult>().ConfigureAwait(await).GetAwaiter().GetResult();
}

  

c# 后台post,包含file文件的更多相关文章

  1. Java后台使用httpclient入门HttpPost请求(form表单提交,File文件上传和传输Json数据)

    一.HttpClient 简介 HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...

  2. File文件的使用

    线程的停止: 1.停止一个线程一般是通过一个变量来控制 2.如果需要停止一个处于一个等待状态的线程,那么需要配合interrupture方法来完成 守护线程:(后台线程):在一个进程中只剩下守护线程, ...

  3. 用字符流实现每个文件夹中创建包含所有文件信息的readme.txt

    package com.readme; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; i ...

  4. file文件的操作

    <?php //echo readfile('D:\\123.txt');//读取文件内容第一种方式,返回字符串,但是带有长度 echo '<br>'; //var_dump(fil ...

  5. Makefile总述②文件命名、包含其他文件makefile、变量、重建重载、解析

    Makefile的内容 在一个完整的 Makefile 中,包含了 5 个东西:显式规则.隐含规则.变量定义.指示符和注释. 显式规则:它描述了在何种情况下如何更新一个或者多个被称为目标的文件( Ma ...

  6. ASPX页面包含inc文件、用户控件、普通html文件

    如果你是从asp程序员转过来一定不习惯.net的编程风格吧,代码和页面时分离的,asp和php里面时常是引入, 比如<!--#include File="xxxxxxx"-- ...

  7. 后缀为inc的是什么文件?C#中如何包含inc文件?

    在项目Web页面文件中,发现这么一句话: <!-- 页面字符集设置 begin--><!-- #INCLUDE FILE="http://www.cnblogs.com/C ...

  8. PHP 文件包含之文件路径截断(转)

    PHP 文件包含之文件路径截断 以下是网络摘要: 1. 本来还以为挖到金矿了,跟黑哥交流后发现只能应用于Win32平台,使这个BUG的威力暴减,基本没有太大危害了,因为在WIN32平台使用PHP的实在 ...

  9. 分别应用include指令和include动作标识在一个jsp页面中包含一个文件。

    分别应用include指令和include动作标识在一个jsp页面中包含一个文件. hello.jsp <%@ page language="java" import=&qu ...

随机推荐

  1. Spring NoSuchBeanDefinitionException

    转http://www.baeldung.com/spring-nosuchbeandefinitionexception 1. Overview In this article, we are di ...

  2. centos-ftp搭建

    参照https://blog.csdn.net/a735834365/article/details/80622105 https://blog.csdn.net/a735834365/article ...

  3. 浏览收藏夹 看到了hadoop3.0 的改动

    大数据非常前卫的it网站   https://www.iteblog.com/archives/tag/hadoop/ 1.多个服务的默认端口被改变 在此之前,多个Hadoop服务的默认端口都属于Li ...

  4. CentOS6.4下邮件服务器搭建

    CentOS6.4下邮件服务器搭建   linux下邮件服务器的搭建大致分为三个步骤 准备工作(真实的生产环境下需要) 发送服务器安装及配置 (Postfix) 接收服务器安装及配置(dovecot) ...

  5. MFC超链接

    最近写一个小的对话框程序时,想加一个文本超链接,研究了一下,发上自己的研究成果,供大家参考.下面说说完整的步骤. (假定静态文本ID为ID_STATIC) 首先,设置鼠标的形状及响应鼠标点击 第一步, ...

  6. vue 生命周期钩子的理解 watch computed

    一  理解vue的生命周期,首先需要注意几个关键字 1. el :选择器 2. $el:对应选择器的template模板(html代码) 3. render:也是vue实例中的一项,其参数更接近vue ...

  7. php 把秒数转换为时长(h:i:s格式)

    /** * 把秒数转换为时分秒的格式 * @param Int $times 时间,单位 秒 * @return String */ function secToTime($times){ $resu ...

  8. Golang闭包入门了解

    概念闭包就是一个函数与其相关的引用环境组成的一个整体.闭包本质其实是一个函数,但是这个函数会用到函数外的变量,它们共同组成的整体我们叫做闭包. 简单举例说明 package main import ( ...

  9. CSM与UEFI

    最近公司产品部购置一批新电脑,但是预装的win10不能保证兼容老平台软件,于是安装win7系统的任务就落到了我的手中. 观察参数,是8代的U,产品说运维说无能为力,装不了win7.我在网上搜了一下,是 ...

  10. No symbol "xxx" in current context解决

    当gdb的版本低于相应的gcc版本的时候,就会出现debug的时候出现No symbol "*" in current context或者The address where a.o ...