C# OneDrive下载的*.jpeg图像文件在Windows Phone 8中损坏

C# OneDrive下载的*.jpeg图像文件在Windows Phone 8中损坏,c#,windows-phone-8,onedrive,C#,Windows Phone 8,Onedrive,我正在将我的应用程序数据库备份到OneDrive。数据库记录是指存储在独立存储器中的图像。我也备份了那些图像。数据库文件 备份文件的目标是: me/skydrive/my_documents/MyCompany/MyApp/MyBackup.bak jpg图像文件的目标是 me/skydrive/my_documents/MyCompany/MyApp/MyBackup Images/*.jpg 数据库恢复正常,但图像恢复不正常。我已经验证了该图像在SkyDrive上已正确备份-我可以在Sk

我正在将我的应用程序数据库备份到OneDrive。数据库记录是指存储在独立存储器中的图像。我也备份了那些图像。数据库文件

备份文件的目标是:

me/skydrive/my_documents/MyCompany/MyApp/MyBackup.bak
jpg图像文件的目标是

me/skydrive/my_documents/MyCompany/MyApp/MyBackup Images/*.jpg
数据库恢复正常,但图像恢复不正常。我已经验证了该图像在SkyDrive上已正确备份-我可以在SkyDrive上查看并打开它。但是,当我还原时,文件已损坏。以下是我用于恢复的代码:

dynamic cmpFolder = await oneDrive.FindFolder("MyCompany", "me/skydrive/my_documents");
dynamic appFolder = await oneDrive.FindFolder(AppName, cmpFolder.id);

string imagesFileName = Path.GetFileNameWithoutExtension(selectedFile.FileName) + " Images";
dynamic imgFolder = await oneDrive.FindFolder(imagesFileName, appFolder.id);

dynamic fileList = await oneDrive.FindFiles(imgFolder.id);

foreach (var fileData in fileList.data)
{
    string fileName = fileData.name;
    var file =
        await wilFolder.CreateFileAsync(
            Path.GetFileName(fileName), CreationCollisionOption.ReplaceExisting);

    var result = await client.BackgroundDownloadAsync(selectedFile.FileID + 
        "/content/", new Uri(@"\shared\transfers\" + fileName, UriKind.Relative));
}
使用ISETool并查看\shared\transfers,我可以看到该文件不再可读。它的大小约为128k,而原始图像要大得多

我也尝试过这个,这是我的原始代码,直到我开始发现问题:

var downloadResult = await client.DownloadAsync(selectedFile.FileID + "/content/");

using (Stream oneDriveStream = downloadResult.Stream)
{ 
    oneDriveStream.Position = 0;
    byte[] imageBytes = new byte[oneDriveStream.Length];
    int count = oneDriveStream.Read(imageBytes, 0, imageBytes.Length);

    using (var s = await file.OpenStreamForWriteAsync())
    {
        oneDriveStream.CopyTo(s);

        // and tried this
        //s.Write(imageBytes, 0, imageBytes.Length);
    }
}
以下是FindFolder和FindFiles实现,仅供参考:

public async Task<dynamic> FindFiles(string folderName)
{
    LiveOperationResult filesResult = await client.GetAsync(folderName + "/files");
    dynamic files = filesResult.Result;

    return files;
}

public async Task<dynamic> FindFolder(string folderName, string parentFolder)
{
    LiveOperationResult folderResult = await client.GetAsync(parentFolder + "/files?filter=folders");
    dynamic folders = folderResult.Result;

    foreach (var folder in folders.data)
        if (folder.name == folderName)
            return folder;

    return null;
}
公共异步任务findFile(字符串folderName)
{
LiveOperationResult filesResult=await client.GetAsync(folderName+“/files”);
动态文件=filesResult.Result;
归还文件;
}
公共异步任务FindFolder(字符串folderName、字符串parentFolder)
{
LiveOperationResult folderResult=Wait client.GetAsync(parentFolder+“/files?filter=folders”);
动态文件夹=folderResult.Result;
foreach(folders.data中的var文件夹)
if(folder.name==folderName)
返回文件夹;
返回null;
}

如何从OneDrive文件夹成功下载*.jpg图像?

请尝试以下下载路径:

var downloadResult = await client.DownloadAsync(selectedFile.FileID + "/picture?type=full");

我面临着同样的问题,文件没有被完全下载。。但是我的应用程序应该从OneDrive下载任何类型的文件。有什么线索吗?