我需要临时存储文件上传到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();
}
答案 0 :(得分:3)
如果flUpload.FileBytes
是一个字节数组,您可以使用MemoryStream构造函数接受包含的数据作为参数:
MemoryStream memStream = new MemoryStream(flUpload.FileBytes);
如果没有(如果它只是实现了IEnumerable),你可以使用Linq将它转换为字节数组:
MemoryStream memStream = new MemoryStream(flUpload.FileBytes.ToArray());
答案 1 :(得分: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);
}
}
}
答案 2 :(得分:0)
可能更容易使用字符串......所有这些都取决于你想用它做什么。
System.IO.StreamReader reader = new System.IO.StreamReader("path");
string file = reader.ReadToEnd();
或者,如果你需要字节,实际上你可以使用代码snipet“filReadBin”产生这个:
byte[] fileContents;
fileContents = System.IO.File.ReadAllBytes(@"C:\Test.txt");
答案 3 :(得分:0)
只有三行。
if (flUpload.FileName.Length > 0)
{
string directoryPath="C:\\SomeFolderName";
flUpload.SaveAs(directoryPath + "\\" + fileUpload.FileName);
}