话不多说直接上源码

请求实体
 public class AddVideoRequest
    {
        /// <summary>
        /// 文件流
        /// </summary>
        public System.IO.Stream stream { get; set; }
        /// <summary>
        /// 文件名称
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 文件全称,带后缀
        /// </summary>
        public string file_name { get; set; }
    
        /// <summary>
        /// 字节长度
        /// </summary>
        public long length { get; set; }
        /// <summary>
        /// 视频标题
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 视频描述
        /// </summary>
        public string describe { get; set; }
    }

上传方法
public async Task<ResponseModel<AddMediaResponse>> AddVideo(AddVideoRequest video_request, string access_token)
{
try
{
string url = $"https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={access_token}&type=video";
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线
request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); //请求头部信息
StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"media\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", video_request.file_name));
byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString()); Stream fs = video_request.stream;
byte[] bArr = new byte[fs.Length];
fs.Read(bArr, , bArr.Length);
fs.Close();
Stream postStream = await request.GetRequestStreamAsync();
postStream.Write(itemBoundaryBytes, , itemBoundaryBytes.Length);
postStream.Write(postHeaderBytes, , postHeaderBytes.Length);
postStream.Write(bArr, , bArr.Length);
postStream.Write(Encoding.UTF8.GetBytes("--" + boundary + "\r\n"));
postStream.Write(Encoding.UTF8.GetBytes("Content-Disposition: form-data; name=\"description\";\r\n\r\n"));
postStream.Write(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new { title = video_request.title, introduction = video_request.describe })));
postStream.Write(endBoundaryBytes, , endBoundaryBytes.Length);
HttpWebResponse response = await request.GetResponseAsync() as HttpWebResponse;
Stream instream = response.GetResponseStream();
StreamReader sr = new StreamReader(instream, Encoding.UTF8);
string content = sr.ReadToEnd();
var res = JsonConvert.DeserializeObject<AddMediaResponse>(content); return new ResponseModel<AddMediaResponse>
{
success = res.errcode == ,
data = res,
error_message = res.errmsg,
body = content
};
}
catch (Exception ex)
{
return new ResponseModel<AddMediaResponse> { success = false, error_message = ex.Message };
}
}

ASP.NET Core 上传微信永久视频素材的更多相关文章

  1. ASP.NET Core 上传多文件 超简单教程

    示例源码下载地址 https://qcloud.coding.net/api/project/3915794/files/4463836/download 项目地址 https://dev.tence ...

  2. ASP.NET Core 上传文件到共享文件夹

    参考资料:ASP.NET 上传文件到共享文件夹 创建共享文件夹参考资料:https://www.cnblogs.com/dansediao/p/5712657.html 一.配置上传文件相关参数并读取 ...

  3. ASP.NET Core 上传大文件无法接收的问题

    解决办法:在API项目中配置 1. 在 web.config 文件中 <system.webServer>里加入 <security> <requestFiltering ...

  4. 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射

    使用Code First建模自引用关系笔记   原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...

  5. asp.net 文件上传示例整理

    ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录.  代码如下 复制代码 ...

  6. ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug

    ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug 近日发现eWebEditor V2.8 asp 版本上传文件文件名不能包含中文双引号,发现eWebEditor使用ASP“无惧上 ...

  7. ASP.NET文件上传和下载

    大学最近作出相关的需求进行上传和下载文件的网站(求为:站点发布的通知,在后台要能给每一个通知加入附件.在前台要能显示并下载附件),之前仅仅是学习过关于上传的 理论知识,这里实践了一下下,与大家分享一下 ...

  8. asp.net mvc上传头像加剪裁功能

    原文:asp.net mvc上传头像加剪裁功能 正好项目用到上传+剪裁功能,发上来便于以后使用. 我不能告诉你们其实是从博客园扒的前台代码,哈哈. 前端是jquery+fineuploader+jqu ...

  9. asp.net core上使用Redis探索(2)

    在<<asp.net core上使用Redis探索(1)>>中,我介绍了一个微软官方实现Microsoft.Extensions.Caching.Redis的类库,这次,我们使 ...

随机推荐

  1. 通过编写串口助手工具学习MFC过程——(六)添加Edit编辑框控件

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  2. 二: Jvm内存模型

    因为每个对象生命周期不一样,jvm在做内存管理的时候,就帮我们分成了三个区域: 1.  新生代(回收频率高)   新生和老年默认大小比例为1:2 2.  老年代(回收频率低)     最好所有的对象都 ...

  3. 微信小程序css篇----flex模型

    一.Flex布局是什么? Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为Flex布局. .box{displ ...

  4. java中的数据类型,基本数据类型及其包装类型

    java中的8大基本类型及其包装类型 1,int--->Integer 2,byte--->Byte 3,short--->Short 4,long--->Long 5,cha ...

  5. vue梳理(1)

    单选/复选 <div id="app"> <!--checkbox需要给每个复选双向绑定同一个数据,并添加value值, 点击某个复选时就会把该复选的value值 ...

  6. django基础篇02-url路由系统

    django的路由系统: 一.基本用法: 1.path('index', views.index), # 通过类的方式创建url映射 2.path('home', views.Home.as_view ...

  7. 学习R的悬疑录(不定期更新)

    在使用caret包建模时候,没有导入机器学习包,如rpart.randomForest等,并不会对结果有影响.不知道是不是caret包内置了机器学习模块. # 加载r包 library(data.ta ...

  8. 05.Linux系统-WCP知识共享平台安装部署(旗舰版)

    WCP知识共享平台部署 一.环境准备 操作系统:CentOS Linux release 7.5.1804 (Core) Java:jdk-7u79-linux-x64.tar.gz 中间件:apac ...

  9. 不启动或进入虚拟机,查看 KVM 虚拟机中的网卡信息

    #!bin/bash#作者:liusingbon#功能:#脚本使用工具guestmount,可以将虚拟机的磁盘系统挂载到真实机文件系统中#Centos7.2中安装libguestfs-tools-c, ...

  10. 牛客练习赛49 E 筱玛爱游戏 (线性基+博弈)

    链接:https://ac.nowcoder.com/acm/contest/946/E 来源:牛客网 筱玛爱游戏 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他 ...