1

我有一个要求,包括将文档上传到 sensenet 上的特定文件夹结构。

要创建文件夹结构,我使用的是 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();
4

1 回答 1

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

于 2017-12-15T12:37:25.597 回答