首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sensenet:通过sensenet客户端API上传文件6.5版不能正常工作

Sensenet:通过sensenet客户端API上传文件6.5版不能正常工作
EN

Stack Overflow用户
提问于 2017-05-02 17:55:32
回答 2查看 95关注 0票数 0

我已经安装了Codeplex6.5版(代码来自SenseNet )。我想使用Sensenet客户端API上传内容存储库中的文件,但不幸的是它不支持批量上传。

代码语言:javascript
复制
    string [] fileEntries = Directory.GetFiles(@"C:\Users\conyna\Downloads\Chirag");

             foreach (string fileName in fileEntries)
             {
                 using (Stream fs = File.OpenRead(fileName))
                 {
                     string fn = Path.GetFileName(fileName);

                     Task<SenseNet.Client.Content> x =   SenseNet.Client.Content.UploadAsync("/Root/Sites/Default_Site/workspaces/(apps)/DocumentLibrary", fn, fs);
                 }
             }
EN

回答 2

Stack Overflow用户

发布于 2017-05-02 20:50:35

上面的代码有两个问题:

  1. 你必须等待异步方法的‘。当前使用UploadAsync方法启动任务,但不等待它完成,这会导致问题,因为文件流在启动上传任务后立即关闭。请以异步方式上传文件(当然,您也必须使调用者方法异步,但这正是使用异步api的意义所在):

代码语言:javascript
复制
await Content.UploadAsync(...)

你也可以考虑在客户端使用导入器类,它能够导入完整的目录结构。

  1. 您尝试上载到的(
  2. )文件夹不是正确的目标,该文件夹旨在包含应用程序(主要是页面)。如果上载到工作区中的文档库,效果会更好,例如:

/Root/Sites/Default_Site/workspaces/Document/SampleWorkspace/DocumentLibrary

票数 2
EN

Stack Overflow用户

发布于 2017-12-15 18:58:01

我们使用SN ClientLibrary创建了一个小型应用程序。我认为,您可以使用此应用程序/信息/代码。

此应用程序可以通过Client Libray上传整个文件夹。请查看我的Github存储库:https://github.com/marosvolgyiz/SNClientLibraryUploader

有相应的上传方法:

代码语言:javascript
复制
public async Task Upload()
        {
            try
            {
                Console.WriteLine("Initilization...");
                ClientContext.Initialize(new[] { sctx });

                Console.WriteLine("Upload Started");
                //Is Parent exists
                var content = await Content.LoadAsync(Target);
                if (content != null)
                {
                    //Uploading files
                    var tasks = new List<Task>();
                    foreach (var file in Files)
                    {
                        string fileTargetFolder = Target + file.DirectoryName.Replace(Source, "").Replace(BaseDirectory, "").Replace("\\", "/");
                        var fileTargetContentFolder = await Content.LoadAsync(fileTargetFolder);
                        if (fileTargetContentFolder == null)
                        {
                            if (CreateFolderPath(Target, file.DirectoryName.Replace(Source, "")))
                            {
                                fileTargetContentFolder = await Content.LoadAsync(fileTargetFolder);
                                Console.WriteLine("#Upload file: " + file.FullName);
                                tasks.Add(Content.UploadAsync(fileTargetContentFolder.Id, file.Name, file.OpenRead()));
                                LoggerClass.LogToCSV("File uploaded", file.Name);
                            }
                            else
                            {
                                LoggerClass.LogToCSV("File target folder does not exist or you do not have enough permission to see! File can not be uploaded. ", file.Name);
                            }
                        }
                        else
                        {
                            Console.WriteLine("#Upload file: " + file.FullName);
                            tasks.Add(Content.UploadAsync(fileTargetContentFolder.Id, file.Name, file.OpenRead()));
                            LoggerClass.LogToCSV("File uploaded", file.Name);
                        }
                    }
                    await Task.WhenAll(tasks);
                }
                else
                {
                    Console.WriteLine("Target does not exist or you do not have enough permission to see!");
                    LoggerClass.LogToCSV("Target does not exist or you do not have enough permission to see!");
                }
                Console.WriteLine("Upload finished.");
            }
            catch (Exception ex)
            {
                LoggerClass.LogToCSV(ex.Message);
            }
        }

我希望我的回答对你有帮助。

Br,maros

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43734953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档