owin,webapi中将文件写入到response stream中
首先在controller项目中添加一个类:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace Test { public interface IWriteStreamToResponse<T> { T Suorce { get; set; } void WriteToStream(Stream outputStream, HttpContent content, TransportContext context); } public class StreamFromFileName : IWriteStreamToResponse<string> { private string _suorce; public string Suorce { get { return _suorce; } set { _suorce = value; } } public async void WriteToStream(Stream outputStream, HttpContent content, TransportContext context) { try { ]; using (var video = File.Open(_suorce, FileMode.Open, FileAccess.Read)) { var length = (int)video.Length; ; && bytesRead > ) { bytesRead = video.Read(buffer, , Math.Min(length, buffer.Length)); , bytesRead); length -= bytesRead; } } } catch (Exception ex) { return; } finally { outputStream.Close(); } } } public class StreamFromBytes : IWriteStreamToResponse<byte[]> { private byte[] _source; public byte[] Suorce { get { return _source; } set { _source = value; } } public async void WriteToStream(Stream outputStream, HttpContent content, TransportContext context) { try { , _source.Length); } catch (Exception ex) { return; } finally { outputStream.Close(); } } } }
controller中的action调用
public HttpResponseMessage GetVideo(string file) { try { var bytes = IC.GetClipFileBytes(file.Replace(".mp4", "")); if (bytes == Encoding.UTF8.GetBytes(EntityEnums.StatusCode.NoFound.ToString())) throw new HttpResponseException(HttpStatusCode.NotFound); IWriteStreamToResponse<byte[]> video = new StreamFromBytes() { Suorce = bytes }; Action<Stream, HttpContent, TransportContext> send = video.WriteToStream; var response = Request.CreateResponse(); response.Content = new System.Net.Http.PushStreamContent(send, new MediaTypeHeaderValue("video/mp4")); //调用异步数据推送接口 return response; } catch (Exception) { throw; } }
action中接收客户端upload的文件
string tempFile = Environment.GetEnvironmentVariable("TEMP"); MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(tempFile); var result = Request.Content.ReadAsMultipartAsync(provider).Result; string[] arrFiles = new string[provider.FileData.Count]; ; //Request.Content.ReadAsMultipartAsync().Wait(); // 获取文件名称 foreach (MultipartFileData fileData in provider.FileData) { }
owin,webapi中将文件写入到response stream中的更多相关文章
- 将raw里面的数据库文件写入到data中
package com.city.list.db; import java.io.File; import java.io.FileNotFoundException; import java.io. ...
- PHP文件读写操作之文件写入代码
在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势,但是文件读写操作在基本的PHP开发 ...
- UBOOT把文件写入 NandFlash
如果把一个传到内存中的文件写入到 Nand Flash 中, 如:新的 uboot.bin, zImage(内核), rootfs 等, 如果做呢?我们可以用 Nand Flash 命令来完成. 但是 ...
- (转)基于OWIN WebAPI 使用OAuth授权服务【客户端模式(Client Credentials Grant)】
适应范围 采用Client Credentials方式,即应用公钥.密钥方式获取Access Token,适用于任何类型应用,但通过它所获取的Access Token只能用于访问与用户无关的Open ...
- 基于OWIN WebAPI 使用OAuth授权服务【客户端模式(Client Credentials Grant)】
适应范围 采用Client Credentials方式,即应用公钥.密钥方式获取Access Token,适用于任何类型应用,但通过它所获取的Access Token只能用于访问与用户无关的Open ...
- C# 下载文件 删除文件 写入文本
由于经常用到文件处理,便自己封装了下 分享给大家. 包含写入文本 批量删除文件 下载文件 .--可直接使用 /// <summary> /// 写入到txt /// </summ ...
- ASP 读写文件FSO,adodb.stream
例如静态化页面的时候 总结:用server.CreateObject("adodb.stream") 来读写比较好,可避免乱码和读取到多余的字符.....不推荐 "scr ...
- [转]WebApi 后端文件传输至远程服务器
/* 功能说明:微信退款需要有数字证书,而我们公司是做小程序平台的,会帮商家自动退款,所以会要求商家把微信证书上传至我们服务器,以便 微信退款. 使用HttpPostedFile 接受前端上传的文件, ...
- ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus
ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus 本文承接我的上一篇博文: ASP.NET 5 Linux部署,那篇文章主要是针对最新的ASP. ...
随机推荐
- 克隆虚拟机重启服务时 Error:No suitable device found: no device found for connection "System eth0"
故障说明: 在克隆几台虚拟机,发现启动后不能配置IP地址等信息,使用linux命令: “ifup eth0”也不能激活网卡, 而在使用"service network restart&quo ...
- css 绘制对话框三角符号
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- BZOJ 3176 Sort
先一遍reverse+逆序对个数. 要开long long啊. #include<iostream> #include<cstdio> #include<cstring& ...
- 安装mongodb 远程服务器报错
安装的时候百度了各种教程 就是装不上 结果原因看下图吧 后面这神秘代码是什么鬼 加上后就能正常下载了
- Unicode字符集下CString与char *转换 (解决中文乱码等)(转)
UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家 ...
- savedInstanceState的作用
在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有种机制,能保存当时的状态,这就是savedInstanc ...
- iOS的UIDevice,NSBundle,NSLocale
iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用 户设备.系统信息.应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息,是通过开发api可以获取 ...
- IL命令
部分CIL 操作码 操作码 作用 add, sub, mul, div, rem ...
- oracle 多条语句同时执行(比如返回两个dataset)
public DataSet GetQualityStatistics(DateTime start_date,DateTime end_date,string modality,string hos ...
- UICollectionViewCell选中高亮状态和UIButton的高亮状态和选中状态
UICollectionViewCell选中高亮状态 //设置点击高亮和非高亮效果! - (BOOL)collectionView:(UICollectionView *)collectionView ...