2017-06-20 92 views
1

我有一個需求,即將文檔上傳到sensenet上的特定文件夾結構。Sensenet API:使用客戶端將文件上傳到文件夾結構

要創建文件夾結構,我使用Tools.EnsurePathAsync。在此之後,我將文件上傳到我剛創建的文件夾結構。該文件夾創造出色。但僅在少數情況下才會上傳文件。

Task.Run(() => Tools.EnsurePathAsync(pathDocType)).Wait(); 

Task.Run(() =>{ 
    var stream = new MemoryStream(byteContent); 
    Content.UploadAsync(pathDocType, "test.doc", stream).WaitAndUnwrapException(); 
    stream.Dispose(); 
}).Wait(); 

回答

1

我們有一個uplader應用至極可以創建非存在的文件夾,複製的相關方法:

private bool CreateFolderPath(string parentPath, string pathToCreate) 
     { 
      try 
      { 
       string[] folders = pathToCreate.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries); 
       foreach (string folderName in folders) 
       { 
        var fileTargetContentFolderTask = Content.LoadAsync(parentPath+"/"+folderName); 
        fileTargetContentFolderTask.Wait(); 
        if (fileTargetContentFolderTask.Result == null) 
        { 
         var folder = Content.CreateNew(parentPath, ConfigurationManager.AppSettings["FolderType"], folderName); 
         var task = folder.SaveAsync(); 
         task.Wait(); 
        } 
        parentPath += "/" + folderName; 
       } 
       return true; 
      } 
      catch 
      { 
       return false; 
      } 
     } 

也許你可以用戶這種方法創建上傳子文件夾。 該文件夾下不允許使用特定類型。你可以閱讀下面的鏈接:http://wiki.sensenet.com/Allowed_Child_Types

在GitHub上載: https://github.com/marosvolgyiz/SNClientLibraryUploader 相關的源文件:https://github.com/marosvolgyiz/SNClientLibraryUploader/blob/master/CLUplader/ClientLibraryUploader.cs