2

我需要将文件上传临时存储到 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();
    }
4

4 回答 4

3

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

MemoryStream memStream = new MemoryStream(flUpload.FileBytes);

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

MemoryStream memStream = new MemoryStream(flUpload.FileBytes.ToArray());
于 2009-11-06T20:57:04.140 回答
1
    protected void lnkUploadFile_Click(object sender, EventArgs e)
    {
        using (MemoryStream memStream = new MemoryStream(flUpload.FileBytes))
        {
            using (FileStream fstream = new FileStream(@"C:/test/" + 
                flUpload.FileName, FileMode.Create))
            {
                memStream.WriteTo(fstream);
            }
        }
    }
于 2009-11-06T21:05:35.980 回答
0

作为字符串使用可能更容易......我猜这一切都取决于你要用它做什么。

System.IO.StreamReader reader = new System.IO.StreamReader("path");
string file = reader.ReadToEnd();

或者,如果您需要字节,实际上可以使用代码片段“filReadBin”来生成:

byte[] fileContents;
fileContents = System.IO.File.ReadAllBytes(@"C:\Test.txt");
于 2009-11-06T21:01:30.470 回答
0

就三行。

if (flUpload.FileName.Length > 0)
{
   string directoryPath="C:\\SomeFolderName";
   flUpload.SaveAs(directoryPath + "\\" + fileUpload.FileName);
}
于 2012-02-29T12:40:45.293 回答