/// <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. jmeter接口测试与接口测试工具

    接口测试与接口测试工具 1,什么是接口? 接口,Application Programming Interface(API) 通俗的讲 就是HTTP请求 2,什么是接口测试? 接口测试测试组件间接口的 ...

  2. Keyguard分析

      从Android 6.0开始,位于frameworks/bases/packages/Keyguard的Keyguard开始被编译为一个jar包,被SystemUI静态导入,相当于SystemUI ...

  3. re正则常用示例积累

    2019-12-7 import re ''' 示例1: 提取网站的网址 ''' urls = ['https://blog.csdn.net/xxcupid/article/details/5199 ...

  4. PL/SQL 循环

    ----PL/SQL基本循环语句 LOOP DECLARE x ; BEGIN LOOP dbms_output.put_line(x); x :; THEN exit; END IF; END LO ...

  5. layer.js插件

    官方网址: http://layer.layui.com/

  6. 【POJ2893&HDOJ6620】M × N Puzzle(n*m数码判定)

    题意:给定一个n*m的矩阵,其中不重复地填[0,n*m-1],问是否能通过有限步数将0移到右下角 n,m<=1e3 思路:结论题 当板子了 #include<bits/stdc++.h&g ...

  7. .net core跨平台

    https://www.cnblogs.com/artech/p/7812811.html .net简介:https://baike.baidu.com/item/.NET/156737?fr=ala ...

  8. SQL中MINUS的用法与UNION的用法

    一:MINUS指令 其是运用在两个 SQL 语句上.它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL语句的结果中.如果有的话,那第一个SQL结果数据就被去除,而不会在最后 ...

  9. Jquery取得Iframe中的元素

    DOM方法: 父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.document ...

  10. 阿里云数据库导出-本地mysql导入

    因阿里云数据库标准访问模式不支持外网接入 因此导出一份到本地,注意选择编码为utf8 mysql 命令行用source导入有utf8编码的sql文件时导入的数据有乱码解决办法 set names ut ...