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. ...
随机推荐
- python bytes to string
python bytes 转化成 string 会遇到如下错误: codec can't decode byte 0xff in position 5: illegal multibyte seque ...
- zynq中uboot的qspi启动报错及解决办法
问题描述: 用u-boot-xlnx-v2016.3版本编译的uboot通过qspi flash启动出现如下错误: 尝试在uboot命令行输入"sf probe 0 0 0"挂载q ...
- HDU2544 最短路dij
纯最短路. ///HDU 2544堆优化的最短路 #include <cstdio> #include <iostream> #include <sstream> ...
- C#通过反射进行枚举描述相关操作
C#可以通过反射,来获取枚举的描述信息或通过描述信息获取到指定类型的枚举 /// <summary> /// 获取枚举描述 /// </summary> /// <par ...
- Data Big Bang
在过去的五十多年中,我们可以较为直观地看到IT行业正以蓬勃发展之势渗入到我们生活的方方面面.虽经历过几轮新兴和重叠的技术浪潮,但每一波浪潮都伴随着新兴技术的革新.IT供应商主导着互联网的走向,网络秩序 ...
- Xcode6 storyboard new push segue 后的视图控制器没有navigation item bug.
手动切一下 老的push,再切回来,就会出有了,我想是一个bug. Xcode 6 Segue with UINavigationItem up vote0down votefavorite I' ...
- Some thing about Graph
Learning CNNs for Arbitrary Graphs (Graph-like data): Learning Convolutional Neural Networks for Gra ...
- MySQL集群在断网后再启动报"Unable to start missing node group"问题处理
总所周知,MySQL集群又名ndb cluster,而ndb就是network based database的简称,数据库节点之间依靠网络来通信和保证数据分块间的一致性.今天由于机房交换机损坏,导致集 ...
- linux下JDK1.7安装
http://mnt.conf.blog.163.com/blog/static/115668258201210793915876/ 一.软件下载1.下载JDK(下面分别是32位系统和64位系统下的版 ...
- 3.Complementing a Strand of DNA
Problem In DNA strings, symbols 'A' and 'T' are complements of each other, as are 'C' and 'G'. The r ...