/// <summary>
/// 上传文件 - 武汉站点
/// </summary>
[HttpPost]
public IActionResult UploadWH(RequestFileModel model)
{
var extensionUpper = Path.GetExtension(model.File.FileName).ToUpper().TrimStart('.');
// POST请求,转发数据
using (var stream = model.File.OpenReadStream())
{
var fileType = FileExtension.GetFileType(stream); var flag = FileExtension.CheckExtention(extensionUpper, fileType);
if (!flag)
{
//throw new FileErrorException("请选择支持的文件格式");
return EvosErrorContentResult("errorFormat", $"请选择支持的文件格式", fileType, HttpStatusCode.BadRequest);
}
stream.Seek(, SeekOrigin.Begin); var result = FileExtension.UploadFileWH(model, stream, _domainConfig.EvosFileSite); return Ok(JsonConvert.DeserializeObject<JObject>(result));
}
}

/// <summary>
/// /// <summary>
/// 转发文件-武汉文件站点
/// </summary>
/// <param name="model"></param>
/// <param name="stream"></param>
/// <param name="fileSite"></param>
/// <returns></returns>
public static string UploadFileWH(RequestFileModel model, Stream stream, string fileSite)
{
ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; string result = "";
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, , buffer.Length); var handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = delegate { return true; }
}; var webRequest = new HttpClient(handler); using (var multipartFormDataContent = new MultipartFormDataContent())
{
var values = new[]
{
new KeyValuePair<string, string>("id", model.Id??""),
new KeyValuePair<string, string>("refId", model.ReFld??""),
new KeyValuePair<string, string>("refType", model.RefType??""),
new KeyValuePair<string, string>("bventId", model.BventId??""),
new KeyValuePair<string, string>("remarks", model.Remarks??""),
new KeyValuePair<string, string>("useOriginName", model.UseOriginName.ToString())
};
foreach (var keyValuePair in values)
{
multipartFormDataContent.Add(new StringContent(keyValuePair.Value),
String.Format("\"{0}\"", keyValuePair.Key));
}
multipartFormDataContent.Add(new ByteArrayContent(buffer), "file", model.File.FileName); result = webRequest.PostAsync(fileSite, multipartFormDataContent).Result.Content.ReadAsStringAsync().Result;
} return result;
}
}

 
public class RequestFileModel
{
public IFormFile File { get; set; }
// 如果传了文件id,则会更新文件内容,如果文件不存在会抛错
public string Id { get; set; }
// 选填,关联id,根据此字段可以查出业务关联的所有文件
public string ReFld { get; set; }
//:选填,关联类型,分类字段,用于标识文件的业务类型
public string RefType { get; set; }
//:选填,会议id
public string BventId { get; set; }
//:备注,选填
public string Remarks { get; set; }
//: 选填,上传文件是否使用原名称,默认是
public bool UseOriginName { get; set; } = true;
}

httpclient请求接口,上传文件附加参数(.net core)的更多相关文章

  1. H5 FormData对象的使用——进行Ajax请求并上传文件

    XMLHttpRequest Level2 添加了一个新的接口——FormData .[ 主要用于发送表单数据,但也可以独立使用于传输键控数据.与普通的Ajax相比,它能异步上传二进制文件 ] 利用F ...

  2. Jmeter接口上传文件

    一.使用抓包软件抓取该接口,查看参数(图例使用的是charles) 可以看到上传文件的参数名是file1 二.把抓取到的普通参数都放在参数这一栏里,如图所示,不要在意马赛克 三.参数名称写在如图所示的 ...

  3. js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

    ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId ...

  4. 【转】php通过curl跨域向asp.net服务器上传文件及参数

    转:http://blog.sina.com.cn/s/blog_13331dce50102vq32.html 这是一个由php通过调用asp.net接口向asp.net服务器post上传文件及参数并 ...

  5. 请求与上传文件,Session简介,Restful API,Nodemon

    作者 | Jeskson 来源 | 达达前端小酒馆 请求与上传文件 GET请求和POST请求 const express = require('express'); const app = expre ...

  6. 使用python或robotframework调multipart/form-data接口上传文件

    这几天调一个multipart/form-data类型的接口,遇到点小阻碍.之前同事有使用urllib库写了个类似的方法实现,比较长,想要改的时候发现不太好使.在网上查找发现用requests库做这个 ...

  7. Django之用户上传文件的参数配置

    Django之用户上传文件的参数配置 models.py文件 class Xxoo(models.Model): title = models.CharField(max_length=128) # ...

  8. java 调用Spring接口上传文件及其他参数填充

    第一步:在Spring配置中添加以下内容 <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> < ...

  9. c#代码发送post请求,上传文件(并带其他参数)

    本人对post理解不深,前段时间遇到一个需要用c#代码发送post请求上传文件的业务,于是参考了几篇帖子,加上自身实践写出了如下代码.写的比较low 望各位大大指正^_^. 业务需求: 对方给了一个接 ...

随机推荐

  1. c# 匿名委托

    using System; namespace AnonymousMethod { delegate void ArithmeticOperation(double operand1, double ...

  2. python3-sorted

    排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比 ...

  3. 【leetcode】778. Swim in Rising Water

    题目如下: 解题思路:本题题干中提到了一个非常重要的前提:"You can swim infinite distance in zero time",同时也给了一个干扰条件,那就是 ...

  4. Callable使用示例

    之前工作中也有使用过Callable,但是却没有使用Thread对象去操作过,今晚 小组培训,涨知识了,现特意记录一下,以免忘记. 先看一下Thread的构造器 可以看到,Thread类并没有提供参数 ...

  5. 玩转MaxCompute studio SQL编辑器

    SQL因其简单易学的特点,是用户与MaxCompute服务交互的主要手段.如何帮助用户高效愉快的编写SQL是MaxCompute studio的核心使命,下面就让我们来一探究竟: 忘记语法 相信大家都 ...

  6. 在使用mybatis中指定字段查询

    1:需求:查询学过“叶平”老师所教的所有课的同学的学号.姓名: List<Map<String,Object>> selectYepingAllCourse(@Param(&q ...

  7. Docker Swarm学习教程【转载】

    Swarm介绍 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Docke ...

  8. Reporting Services 配置工具

    使用 Reporting Services 配置管理器可配置 Reporting Services 安装.如果使用“仅文件”选项安装报表服务器,则必须使用此工具来配置服务器,才能使用该服务器.如果使用 ...

  9. Java-package import关键字

    package包关键字,在java中,有包的概念,主要是用来归类 分类作用: 便于项目的开发和维护: 通过分包,可以很清晰的来管理类: 上述 一个类Animal: 在开头有个 package com. ...

  10. v-if指令

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...