谷歌驱动器,上传MemoryStream

时间:2015-01-13 07:13:09

标签: c# google-drive-api

此代码运作良好:

img.Save("111.png", System.Drawing.Imaging.ImageFormat.Png);
using (MemoryStream fileStream = new MemoryStream(System.IO.File.ReadAllBytes("111.png")))
{
    FilesResource.InsertMediaUpload request = _drive.Files.Insert(item, fileStream, mimeType);
    request.Upload();
}

但是当我尝试上传从MemoryStream收到的System.Drawing.Image时,我得到了一个谷歌异常: 'The given header was not found.'

代码:

System.Drawing.Image img = myImgObj;
using (MemoryStream fileStream = new MemoryStream()))
{        
    img.Save(fileStream, System.Drawing.Imaging.ImageFormat.Png);
    FilesResource.InsertMediaUpload request = _drive.Files.Insert(item, fileStream, mimeType);
    request.Upload();
}

有人可以帮我修复代码吗?

1 个答案:

答案 0 :(得分:1)

我不想说你为什么会遇到这个特定错误,但是在你调用Save之后,流的“游标”位于数据的 end ,因此Insert没有数据可供阅读。您应该回放信息流:

img.Save(...);
fileStream.Position = 0;

我还建议fileStream MemoryStream变量的名称有点误导...