2017-10-17 20 views
0

Après-midi tous, Je suis nouveau à essayer d'intégrer avec une API tierce et il s'avère être fastidieux. Laissez-moi d'abord expliquer mon objectif: Créez un fichier (un fichier .txt) et téléchargez-le dans un seul compte Dropbox pour un utilisateur à récupérer plus tard. Avant d'accéder au processus de téléchargement, le fichier est défini comme un flux de mémoire. J'essaie ensuite d'utiliser ce code simple (à des fins de test) pour télécharger sur mon compte, dont j'ai la clé pour. Voici une snippit générale d'utilisation:Dropbox API 2 - UploadAsync renvoie erreur de chemin d'accès invalide

public async Task<string> ReturnNewUploader(FileDetailObject fdo) { 
var dbx = new DropboxClient("MY KEY"); 
fdo.DropboxClient = dbx; 
var action = await fileUploader.UploadFileAsync(fdo); 
...} 

public async Task<string> UploadFileAsync(FileDetailObject fdo) { 
var dropbox = await fdo.DropboxClient.Users.GetCurrentAccountAsync(); 
var req = await fdo.DropboxClient.Files.UploadAsync("TestFolder/test.txt" WriteMode.Overwrite.Instance, body: fdo.MemStream); 

Ce qui précède est où l'exception est levée: La valeur doit correspondre modèle \ A (:. (/ (| [\ R \ n]) ) | (ns: [0-9] + (/.)) | (id: *.)) \ z » nom du paramètre: chemin ParamName: chemin

StackTrace: à Dropbox.Api.Files.CommitInfo. .ctor (Chemin de chaîne, mode WriteMode, nom de domaine booléen, Nullable 1 clientModified, Boolean mute) at Dropbox.Api.Files.Routes.FilesUserRoutes.UploadAsync(String path, WriteMode mode, Boolean autorename, Nullable 1 clientModified, Boolean mute, Corps du flux) at appname.BusinessLogic.FTPer.d__3.MoveNext() in C: ......... \ appname \ appname.BusinessLogic \ FT Per.cs: ligne 78

Je ne comprends pas ce qui ne va pas avec le chemin - il semble correspondre à ce qu'ils attendent. Le répertoire existe sur le compte. Je l'ai essayé sans utiliser un dossier non plus et juste en passant un nom de fichier et j'obtiens la même erreur.

Pensées? Aussi, si cela peut être mis en œuvre plus proprement, je suis absolument ouvert aux suggestions. Sachez simplement que cela ne peut vraiment pas utiliser une invite de connexion et doit écrire sur un seul compte Dropbox que nous contrôlons.

Répondre

1

chemins de fichiers non-racine doit commencer par '/', donc au lieu de:

"TestFolder/test.txt"

vous devriez avoir quelque chose comme:

"/TestFolder/test.txt"

+0

Merci Greg - je en train de faire tout ce et a trouvé que cela a résolu le problème. Merci! – lrossignol