1
我正在將我的應用程序數據庫備份到OneDrive。數據庫記錄涉及存儲在獨立存儲中的圖像。我也備份這些圖像。數據庫文件。OneDrive已下載* .jpeg Windows Phone 8中的圖像文件損壞
備份文件的目的地是:
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和觀看\共享\轉賬,我可以看到文件不再可讀。它的大小約爲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;
}
我如何成功從我的OneDrive文件夾下載* .jpg圖像?
我面臨同樣的問題的文件沒有得到完全下載..但我的應用程序是假設從OneDrive下載任何類型的文件。任何線索可能是什麼問題? –