//------------------------------------------------------------------------------ // 此代码版权(除特别声明或在XREF结尾的命名空间的代码)归作者本人若汝棋茗所有 // 源代码使用协议遵循本仓库的开源协议及附加协议,若本仓库没有设置,则按MIT开源协议授权 // CSDN博客:https://blog.csdn.net/qq_40374647 // 哔哩哔哩视频:https://space.bilibili.com/94253567 // Gitee源代码仓库:https://gitee.com/RRQM_Home // Github源代码仓库:https://github.com/RRQM // API首页:https://www.yuque.com/rrqm/touchsocket/index // 交流QQ群:234762506 // 感谢您的下载和使用 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ using System.Collections.Specialized; namespace TouchSocket.Http { /// /// 表单文件 /// public interface IFormFile { /// /// 获取Content-Disposition /// string ContentDisposition { get; } /// /// 获取Content-Type /// string ContentType { get; } /// /// 实际的数据 /// public byte[] Data { get; } /// /// 数据对 /// public NameValueCollection DataPair { get; } /// /// 获取file name /// string FileName { get; } /// /// 文件长度。在数据接收完成之前,该值为-1; /// long Length { get; } /// /// 获取name字段 /// string Name { get; } ///// ///// 读取文件数据 //太麻烦先不实现 ///// //public int Read(byte[] buffer, int offset, int count); } internal class InternalFormFile : IFormFile { public string ContentDisposition => DataPair["Content-Disposition"]; public string ContentType => DataPair["Content-Type"]; public byte[] Data { get; set; } public NameValueCollection DataPair { get; set; } public string FileName => DataPair["filename"]; public long Length => Data == null ? 0 : Data.Length; public string Name => DataPair["name"]; //public int Read(byte[] buffer, int offset, int count) //{ // return this.ReadAction(buffer, offset, count); //} //public Func ReadAction { get; set; } } }