微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

BoxFile file = await Client.FilesManager.Get@R_178_4045@ionAsync(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,(int)file.Size.Value); fileStream.Write(bytes,bytes.Length); }

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

如果我拉一个DOCX或PPTX文件,并在Word或PowerPoint中打开它们,我得到一个损坏的文件消息。 文件大小是正确的。

如果该文件一个简单的txt文件,它似乎是成功的。

我寻找一些独特的东西来识别一个Windows共享与C#

在尝试使用Windows的mono-4.2.2时,请保持Exec格式错误

在64位Windows中挂钩32位进程

C#windows服务程序

从string获得LCID

我究竟做错了什么?

在Windows 8(WPF,.NET 4.0)下无法以横向打印文档

给定一个特定的PID,如何杀死Java中的进程

在Java中读取二进制文件时,将小端转换为大端

使用明确的RSA密钥对在C#中创buildCSR

是否有可能识别如果EXE是Windows服务?

当数据从服务器返回时, stream将使内容可用。 单一的stream.Read调用只是获取一个块,这就是为什么图像的顶部切片显示正确,但图像的其余部分是空的。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐