2011-05-11 2 views
0

Je n'ai jamais travaillé avec VSTO et j'ai récemment lu toutes sortes de choses à ce sujet. Je pose donc une question théorique. J'essaye de faire un addin qui devrait (en utilisant des boutons dans son propre onglet de ruban) télécharger le document sur mon site Web (c'est comme slideshare). Le problème est que ce fichier peut déjà être téléchargé et que l'utilisateur essaie peut-être de le mettre à jour.Reconnaissance d'un document nouveau ou déjà connu avec VSTO

J'ai donc besoin d'un moyen de savoir si ce fichier a déjà été téléchargé. Je sais que la prédiction ne peut pas être précise à 100%, c'est pourquoi je vais demander à l'utilisateur un dialogue, mais j'ai besoin qu'il soit assez intelligent pour alerter l'utilisateur si le fichier PEUT ÊTRE déjà téléchargé.

Cette supposition peut être côté client uniquement, avec une base de données quelconque (dans l'addin lui-même). J'ai pensé à enregistrer le nom du fichier et sur cette base, je peux décider si le fichier est nouveau ou s'il a déjà été téléchargé.

Avez-vous d'autres idées? Peut-être qu'il y a une façon plus intelligente de faire cela?

PS. Travailler sur Office 2010 avec la dernière version de VSTO dans VS 2010. Mon langage .net principal est VB mais les exemples en C# sont plus que bienvenus (si vous en avez).

+0

pourrait le Addin faire un appel http à un script sur le serveur (comme me donner le SHA1 de votre copie ce document)? –

+0

Je peux faire tout ce que je veux avec le serveur mais je pense que vous n'avez pas compris ma question. Je veux être capable de dire si le fichier est sur le serveur, MAIS le local (sur le PC de l'utilisateur) peut être changé. Imaginez-le comme un outil de synchronisation. Donc, un hachage ne fonctionnerait pas. – stormbreaker

+0

Pense que je dois manquer le point; J'allais suggérer que si votre utilisateur veut télécharger budget.doc vous pouvez interroger un script côté serveur qui renvoie un hachage de sa copie de ce document, ou une réponse non trouvée, si les hachages ne correspondent pas alors le local la copie des utilisateurs est différente. Alternativement, vous pouvez intégrer des métadonnées de version et comapre que –

Répondre

2

Ce que je ferais probablement dans ce cas est d'ajouter une VARIABLE de DOCUMENT ou une PROPRIÉTÉ DE DOCUMENT avec la valeur d'un GUID.

Ensuite, lorsque vous appuyez sur le fichier, le serveur peut extraire cette propriété, obtenir le guid et effectuer facilement une recherche pour voir si le document est déjà là.

Au moins, ce serait une autre façon (autre que l'utilisateur et le nom de fichier) d'identifier le document.

+0

C'est ce que je pensais juste, mais je ne savais pas qu'il y avait un moyen d'intégrer des données dans les documents. Je suis intéressé par doc/docx et ppt/pptx. Cela fonctionnera-t-il pour les anciens formats? Les noms de fichiers sont souvent modifiés, donc j'essaie de contourner cela. Pouvez-vous fournir un exemple de code qui écrit une propriété var/dans le document lui-même? Ou peut-être quelques liens utiles? Merci beaucoup :) – stormbreaker

+0

Cela ressemble à une douleur royale mais ce n'est pas si grave. Voir cet article MS. http://support.microsoft.com/kb/303296 Il a même un gros morceau de code qui montre la manière nécessaire de le faire lors de l'exécution de diverses versions de Word (ils ont changé les typelibs entre plusieurs versions pour la propriété CustomDocumentProperties, donc – DarinH

+0

Merci, je vais les vérifier – stormbreaker

1

Vous pouvez utiliser les propriétés personnalisées, mais dans PPT j'utiliserais plutôt des balises; l'utilisateur ne peut pas voir/se mêler avec eux.

En supposant une référence à votre présentation dans OPRES

With oPres 
    .Tags.Add "Uploaded", "YES" 
    .Tags.Add "LastUploadDate", "some string you've formatted to taste" 
    .Tags.Add "AnythingElse", "You'd like to record" 
End With 

et

With oPres 
    If .Tags("Uploaded") = "YES" Then 
     ' nothing to do 
    Else 
     ' upload it 
    End If 
End With 
+0

Merci pour la réponse.Quelle est exactement la différence entre les propriétés et les balises? Pourquoi est-il préférable d'utiliser l'un plutôt que l'autre? Merci encore :) – stormbreaker

+0

Fonctionnellement, ils sont similaires. Les deux sont des collections (bien que les Tags soient toujours des chaînes, les propriétés personnalisées peuvent être d'autres types de données). Pour autant que je sache, seul PowerPoint a des tags, il peut donc être plus simple d'écrire pour plusieurs applications utilisant des propriétés. D'autre part, PowerPoint n'alloue qu'une quantité limitée d'espace pour stocker les propriétés, les hyperliens et éventuellement d'autres éléments qui ne sont pas documentés. Ajoutez trop de données aux propriétés et vous risquez de corrompre les liens hypertexte d'une présentation. Encore une fois, l'utilisateur peut voir (éditer, supprimer) des propriétés personnalisées. Ils ne peuvent pas voir les tags. –

+0

J'ai besoin de la solution pour travailler sur des documents Powerpoint et Word, ce qui signifie que je vais m'en tenir aux propriétés. Je peux réduire les données de propriété à un simple int (un identifiant), donc la taille ne devrait pas poser de problème ici. Merci encore d'avoir essayé d'aider :) – stormbreaker

Questions connexes