存储文件上传到MemoryStream(C#)的最佳做法是什么? [英] What is the best practice for storing a file upload to a MemoryStream (C#)?

查看:131
本文介绍了存储文件上传到MemoryStream(C#)的最佳做法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要临时将文件上传到MemoryStream。



使用asp.net(3.5)做这个最好的方法是什么?



这是我到目前为止。它工作(本地测试),但它看起来不正确的我。

 保护无效lnkUploadFile_Click(对象发件人,EventArgs e) 
{
MemoryStream memStream = new MemoryStream();

BinaryWriter sWriter = new BinaryWriter(memStream);

foreach(在flUpload.FileBytes中的字节b)
{
sWriter.Write(b);
}

sWriter.Flush();

//写入文件来验证正确转换的文件流
FileStream fstream = new FileStream(@C:/ test /+ flUpload.FileName,FileMode.Create);
memStream.WriteTo(fstream);
fstream.Dispose();

memStream.Dispose();


解决方案

> flUpload.FileBytes 是一个字节数组,您可以使用接受包含的数据作为参数的MemoryStream构造函数:

  MemoryStream memStream = new MemoryStream(flUpload.FileBytes);如果不是(如果它只是实现了IEnumerable),那么可以使用Linq将它转换为一个字节数组:







  MemoryStream memStream = new MemoryStream(flUpload.FileBytes.ToArray()); 


I need to temporary store a file upload to a MemoryStream.

What would be the best method to do this using asp.net (3.5)?

Here's what I have so far. It works (locally tested), but it does not look right to me.

protected void lnkUploadFile_Click(object sender, EventArgs e)
    {
        MemoryStream memStream = new MemoryStream();

        BinaryWriter sWriter = new BinaryWriter(memStream);

        foreach (byte b in flUpload.FileBytes)
        {
            sWriter.Write(b);
        }

        sWriter.Flush();

        // writing to file to verify file stream converted correctly
        FileStream fstream = new FileStream(@"C:/test/" + flUpload.FileName, FileMode.Create);          
        memStream.WriteTo(fstream);         
        fstream.Dispose();

        memStream.Dispose();
    }

解决方案

If flUpload.FileBytes is a byte array, you can use the MemoryStream constructor that accepts the contained data as a parameter:

MemoryStream memStream = new MemoryStream(flUpload.FileBytes);

If not (if it just implements IEnumerable), you can convert it to a byte array using Linq:

MemoryStream memStream = new MemoryStream(flUpload.FileBytes.ToArray());

这篇关于存储文件上传到MemoryStream(C#)的最佳做法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆