/// <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. UML建模重点圈划

    面向对象的特征 *P9*>封装性>继承性>多态性>传递性 建模语言的三个类别 *P14*> - 非形式化的.半形式化的和形式化的 UML 特点*15*主要有三个特点:&g ...

  2. R reticulate 设置 python 环境

    library("reticulate") use_python("/usr/bin/python", required = T) py_config() 注意 ...

  3. Linux必备软件安装

    若想Linux体验感更强,安装linux著名的KDE界面 (里面可以配置很多个性化的界面,特效等) # apt install plasma-desktop mpv ---很炫酷的视频播放器okula ...

  4. tensorflow图像处理函数(1)

    1.tensorflow中对jpeg格式图像的编码/解码函数: import matplotlib.pyplot as plt import tensorflow as tf image_raw_da ...

  5. pl/sql中return和exit区别

    经测试: 1.exit只能用于循环中,并且退出循环往下执行: 2.return可用于循环或非循环,并且退出整个程序模块不往下执行. declare i number :=1; j number :=1 ...

  6. PHP之导出CSV文件

    序言 Q1:什么是csv文件? A1:csv即 comma-separated values ,逗号分隔值.是一种通用的相对简单地文件格式,目前被较为广泛的使用.其最广泛的应用就是用来转移表数据. “ ...

  7. 制作自己的win7系统

    每次安装完纯净版的系统,然后是漫长的打补丁,装驱动,装软件.不妨制作一个自己的系统光盘(也就是GHOST系统),再要重装系统时,直接用这个系统光盘,一键安装,方便省时. 制作GHOST系统,就是将本地 ...

  8. BurpSuite从下载安装到配置使用

    为解决一个XSS安全问题,第一次使用BurpSuite,记录一下下载安装到配置使用的过程,希望能对第一次使用该工具的朋友有所帮助. 一.下载及安装 直接百度下载破解版,我下的版本是burpsuite_ ...

  9. CSS学习笔记2:选择器

    标签选择器 1.选择要给样式的目标标签,所以叫做标签选择器,也叫元素选择器. 2.给所有相同标签,给相同样式. <!DOCTYPE html> <html lang="en ...

  10. 【ABAP系列】SAP ABAP模块-memory内存数据传输的例子

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP模块-memor ...