2017-05-03 3 views
0

Je ne parviens pas à télécharger un fichier à l'aide du OneDrive SDK. Selon les informations sur le OneDrive Dev Center, le FileSystemInfo.DateModified fait référence à l'heure à laquelle le fichier a été vu par le service, plutôt que lorsqu'il a été modifié localement. Je tente de le modifier manuellement à la valeur locale avec la suggestion de les inclure avec la demande, mais la valeur définie dans mon code ne colle pas et retourne au moment où la demande PutAsync<Item> est terminée. Qu'est-ce que je fais mal?Comment régler la propriété DateModified sur un seul élément OneDrive

Mon code:

if (localfile != null) 
       { 
        localprop = await localfile.GetBasicPropertiesAsync(); 
        localtime = localprop.DateModified; 
        try 
        { 
         Stream syncstream = await localfile.OpenStreamForReadAsync(); 
         using (syncstream) 
         { 
          var upload = await _userDrive.Drive.Special.AppRoot.ItemWithPath(filepath).Content.Request().PutAsync<Item>(syncstream); 
          upload.FileSystemInfo.LastModifiedDateTime = localtime; 
         } 
        } 
        catch (OneDriveException) 
        { } 
       } 

Ma requête contre le même:

oneDItem = await _userDrive.Drive.Special.AppRoot.ItemWithPath(filepath).Request().GetAsync(); 
       var oneDtime = (DateTimeOffset)oneDItem.FileSystemInfo.LastModifiedDateTime; 
+0

upload.FileSystemInfo.LastModifiedDateTime = localtime; cette déclaration vient après le téléchargement du fichier, donc il ne verra jamais cette mise à jour. – loneshark99

+0

@ loneshark99, merci, alors comment puis-je modifier le code afin de l'inclure dans l'étape de création/chargement de fichier? – Lindsay

Répondre

0

Si vous upload un fichier à un lecteur, il n'y a aucun paramètre pour LastModifiedDateTime de demander ensemble, vous ne pouvez pas changer l'heure modifiée lors du téléchargement. Mais vous pouvez mettre à jour une métadonnée d'article par demande update. Après le téléchargement, vous pouvez obtenir l'article que vous venez de télécharger et mettre à jour ses méta-données LastModifiedDateTime. Code comme suit:

if (localfile != null) 
{ 
    var localprop = await localfile.GetBasicPropertiesAsync(); 
    var localtime = localprop.DateModified;    
    try 
    { 
     Stream syncstream = await localfile.OpenStreamForReadAsync(); 
     using (syncstream) 
     { 
      DriveItem upload = await _userDrive.Me.Drive.Root.ItemWithPath("regfolder/regdata.jpg").Content.Request().PutAsync<DriveItem>(syncstream); 
      DriveItem updateitem = new DriveItem() { 
        FileSystemInfo=new Microsoft.Graph.FileSystemInfo() 
        { 
         LastModifiedDateTime = localtime 
        } 
      };      
      DriveItem Updated = await _userDrive.Me.Drive.Root.ItemWithPath("regfolder/regdata.jpg").Request().UpdateAsync(updateitem); 
     } 
    } 
    catch (Exception ex) 
    { } 
}