c# - 将文件上传存储到 MemoryStream (C#) 的最佳做法是什么?

标签 c# asp.net file-upload memorystream

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

使用 asp.net (3.5) 执行此操作的最佳方法是什么?

这是我目前所拥有的。它有效(本地测试),但我觉得不合适。

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();
    }

最佳答案

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

MemoryStream memStream = new MemoryStream(flUpload.FileBytes);

如果不是(如果它只是实现了 IEnumerable),您可以使用 Linq 将其转换为字节数组:

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

关于c# - 将文件上传存储到 MemoryStream (C#) 的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1690337/

相关文章:

c# - ASP.Net 页面输入键导致回发

php - 在上传或其他解决方案中将密码添加到文件

c# - TryInvokeMember 和 TryInvoke 之间的区别

c# - 来自 C# 中数据集的 foreach 循环中的 XML

c# - FileUpload 在多 View 和更新面板中不起作用

c# - Hierarchyid 数据类型和 Code First

javascript - 为什么我的按钮输出 WebForm_DoPostBackWithOptions?

c# - Entity Framework 和加密数据库

javascript - 单击输入框显示打开文件对话框但不单击选择文件按钮

java - 如何将图像直接上传到S3,而不让在Ec2中运行的java webapp来存储多部分图像?