Stream.Read 始终返回 0

Yog*_*ani 3 asp.net memorystream filestream asyncfileupload

我们使用的是asp.net的Asyncfileupload控件来上传文件,同样不行我们调试了一下,发现这样的代码:

input.Read(buffer, 0, buffer.Length)
Run Code Online (Sandbox Code Playgroud)

返回 0。

整个代码是这样的:

public static byte[] ReadFully(Stream input)
    {
        byte[] buffer = new byte[input.Length];
        using (MemoryStream ms = new MemoryStream())
        {
            int read;
            while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, read);
            }
            return ms.ToArray();
        }
    }
Run Code Online (Sandbox Code Playgroud)

小智 5

如果您位于字节数组的末尾或者网络连接中断,Stream.Read 可能会返回 0。您可以尝试这行代码来确保:

byte[] buffer = new byte[input.Length];
input.Position=0;
        using (MemoryStream ms = new MemoryStream())
        {
            int read;
            while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, read);
            }
            return ms.ToArray();
        }
Run Code Online (Sandbox Code Playgroud)