如何从 HttpPostedFile InputStream 属性 中读取正确的 Stream/byte[]?

How do I read the correct Stream/byte[] from HttpPostedFile InputStream property?

我得到一个正在上传的 HttpPostedFile(应该是 pdf),我必须使用它的 stream 在 PdfSharp 中初始化它。

问题是,虽然 HttpPostedFile SaveAs() 方法保存了一个有效的 pdf,但保存它的 InputStream 并没有创建一个有效的 pdf,所以当我使用 InputStream 在 PdfSharp 上读取 pdf 时会抛出“无效 Pdf”异常,并保存 InputStream 字节 [] 我试图得到这样的:

    public byte[] GetBytesFromStream(System.IO.Stream uploadedFile)
    {
        int length = Convert.ToInt32(uploadedFile.Length); //Length: 103050706
        string str = "";

        byte[] input = new byte[length];

        // Initialize the stream.
        System.IO.Stream MyStream = uploadedFile;

        // Read the file into the byte array.
        MyStream.Read(input, 0, length);
        
        return input;
    }

调用方法如下:

byte[] fileBytes = GetBytesFromStream(uploadedFile.InputStream);

但是从这些字节创建文件也会创建无效的 pdf...

我从这样的字节创建文件...

System.IO.File.WriteAllBytes("Foo.pdf", fileBytes);

那么我有 2 个问题:

1st - 为什么我从 InputStream 接收到的流无效,而 SaveAs 有效。

第 2 - 如何从 inputStream 或 HttpPostedFile 获取正确的流,而不将文件保存到磁盘然后读取它。

注意到这个问题没有得到回答(因为 Evk 的评论是解决方案),我不能接受任何答案。

所以我做这个只是为了不让这个问题得不到解答。

tl;博士; 根据 Evk 的评论,解决方案是流的位置,它被预先读取并在尝试创建 pdf 之前将位置设置为 0 足以解决问题。