如何使用fileupload读取两次文件

时间:2012-11-16 16:26:01

标签: c# asp.net

我试图两次读同一个文件。

我一直在使用FileUpload来查找文件。我在第一次阅读中成功,在那里我找到了文件有多少行,使用C#ans asp.net中的下一个代码:

Stream data_file;
data_file=FileUpload1.PostedFile.InputStream;
string line;
int elements;
StreamReader sr = new StreamReader(data_file);
line = sr.ReadLine();
while (line != null)
{
elements = elements + 1;
line = sr.ReadLine();
}
sr.Close();

有了这个数字,我现在可以通过设置数组将要容纳多少元素来创建一个数组数组。这次的数组将保存文件中的数字:

数据文件:

1,1

2,3

arrayL [0] [0] = 1

arrayL [0] [1] = 1

arrayL [1] [0] = 2

arrayL [1] [0] = 3

所以执行此操作的代码是下一个:

double [][] dime= new double [elements][];
string[] div;
string line2;
int nn=0;
StreamReader ssr = new StreamReader(data_file);
line2 = ssr.ReadLine();
while (line2 != null)
{
dimen[nn] = new double[2];
for (int m2 = 0; m2 < 2; m2++)
{
div=line2.Split(new Char[] { ' ', ',', '\t' });
dimenc[nn][m2] = Convert.ToDouble(div[m2]);
}
nn=nn+1;
line2 = ssr.ReadLine();
}
ssr.Close();

然而,数组说它是空的但是我知道我是否在一个完全不同的方法/第二个按钮中使用了代码的第二部分,但是如果它在同一个方法中则不起作用所以我的问题是:< / p>

怎么了?为什么第二个流读取器无效?

1 个答案:

答案 0 :(得分:1)

实际上@NLemay评论可能是更好的解决方案。

但是如果有人需要两次读取上传的文件,则需要将文件缓存在内存中。要么将流读取到byte[]MemoryStream,然后再使用您的流读取器。你会发现HttpPostedFile.InputStream.CanSeek是假的,这正是你要做的。

对于byte[]

HttpPostedFile uFile = uploadFile.PostedFile;

byte[] data = new byte[uFile.ContentLength];
uFile.InputStream.Read(data, 0, uFile.ContentLength);

MemoryStream查找CopyStream方法。