gpt4 book ai didi

c# - 使用 Box.V2 API,DownloadStreamAsync 调用导致文件损坏

转载 作者:可可西里 更新时间:2023-11-01 10:06:05 25 4
gpt4 key购买 nike

我正在开发一个小程序来从 Box.com 帐户中提取文件。使用 Box C# SDK,我有以下代码:

BoxFile file = await Client.FilesManager.GetInformationAsync(item.Id);
byte[] bytes = new byte[file.Size.Value];

using (FileStream fileStream = new FileStream(dlg.FileName, FileMode.Create, System.IO.FileAccess.Write))
using (Stream stream = await Client.FilesManager.DownloadStreamAsync(file.Id))
{
stream.Read(bytes, 0, (int)file.Size.Value);
fileStream.Write(bytes, 0, bytes.Length);
}

但是,当我尝试拉取图像时,生成的文件是具有正确宽度和高度的图像,但只有顶部切片具有像素数据。图像的其余部分是黑色的。文件大小正确。

如果我提取 docx 或 pptx 文件并在 Word 或 PowerPoint 中打开它们,我会收到一条文件损坏消息。文件大小正确。

如果文件是简单的txt文件,好像成功了。

我做错了什么?

最佳答案

stream 将在数据从服务器返回时以 block 的形式提供内容。单个 stream.Read 调用仅获取第一个 block ,这就是图像顶部切片显示正确但图像其余部分为空的原因。

要解决此问题,请继续从流中读取,直到指示没有其他内容为止。

using (Stream stream = await Client.FilesManager.DownloadStreamAsync(file.Id))
{
int bytesRead;
var buffer = new byte[8192];
do
{
bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
await fileStream.WriteAsync(buffer, 0, bytesRead);
} while (bytesRead > 0);
}

关于c# - 使用 Box.V2 API,DownloadStreamAsync 调用导致文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com