加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用automapper从HttpPostedFileBase映射到Byte []

发布时间:2020-12-16 02:02:51 所属栏目:百科 来源:网络整理
导读:我试图上传图片并使用automapper将其从HttpPostedFileBase转换为Byte [].这是我的CreateMap: Mapper.CreateMapHttpPostedFileBase,Byte[]() .ForMember(d = d,opt = opt.MapFrom(s = { MemoryStream target = new MemoryStream(); s.InputStream.CopyTo(tar
我试图上传图片并使用automapper将其从HttpPostedFileBase转换为Byte [].这是我的CreateMap:

Mapper.CreateMap<HttpPostedFileBase,Byte[]>()
            .ForMember(d => d,opt => opt.MapFrom(s => 
                {
                    MemoryStream target = new MemoryStream();
                    s.InputStream.CopyTo(target);
                    return target.ToArray();
                }));

我在s上得到一个错误:带有语句体的lambda表达式无法转换为表达式树.

那么我应该如何编写我的CreateMap才能使其工作?

解决方法

至少有两种方法可以做到这一点:

>使用custom type converter:

public class HttpPostedFileBaseTypeConverter : 
    ITypeConverter<HttpPostedFileBase,byte[]>
{
    public byte[] Convert(ResolutionContext ctx)
    {
        var fileBase = (HttpPostedFileBase)ctx.SourceValue;

        MemoryStream target = new MemoryStream();
        fileBase.InputStream.CopyTo(target);
        return target.ToArray();        
    }
}

用法:

Mapper.CreateMap<HttpPostedFileBase,byte[]>()
    .ConvertUsing<HttpPostedFileBaseTypeConverter>();

>使用ConstructUsing并以内联方式执行:

Mapper.CreateMap<HttpPostedFileBase,byte[]>()
    .ConstructUsing(fb =>
{
    MemoryStream target = new MemoryStream();
    fb.InputStream.CopyTo(target);
    return target.ToArray();
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读