首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sensenet:通过Sensenet客户端API上传文件并设置修改用户

Sensenet:通过Sensenet客户端API上传文件并设置修改用户
EN

Stack Overflow用户
提问于 2017-02-01 03:37:23
回答 1查看 104关注 0票数 0

我有一个要求,包括通过其他系统上传文件到sensenet。

我正在尝试使用Sensenet Client API来上传文件,但我在使用以下链接中记录的示例时遇到了困难:Client Library (代码运行良好,但文件没有出现在Sensenet上) Common API Calls (我在编译代码时遇到了问题……实例化BinaryData对象)

除此之外,我需要为每个上传文件定义我在代码中指定的"Modified By“,而不是在API中用来验证我身份的用户。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-02 11:17:15

我认为重写ModifiedBy字段是一种边缘情况(或小技巧),但没有任何魔力也是可能的(参见代码)。最简单的方法是发布帖子,然后是补丁,这是由SenseNet.Client完美管理的(代码使用本地演示站点):

代码语言:javascript
复制
    static void Main(string[] args)
    {
        ClientContext.Initialize(new[]
            {new ServerContext {Url = "http://localhost", Username = "admin", Password = "admin"}});

        var localFilePath = @"D:\Projects\ConsoleApplication70\TestFileFromConsole1.txt";
        var parentPath = "/Root/Sites/Default_Site/workspaces/Document/londondocumentworkspace/Document_Library";
        var fileName = "TestFileFromConsole1.txt";
        var path = parentPath + "/" + fileName;
        var userPath = "/Root/IMS/BuiltIn/Demo/ProjectManagers/alba";

        using (var stream = new FileStream(localFilePath, FileMode.Open))
            Content.UploadAsync(parentPath, fileName, stream).Wait();
        Console.WriteLine("Uploaded");

        Modify(path, userPath).Wait();
        Console.WriteLine("Modified");

        Console.Write("Press <enter> to exit...");
        Console.ReadLine();
    }

    // Rewrites the ModifiedBy field
    private static async Task Modify(string path, string userPath)
    {
        var content = await Content.LoadAsync(path);
        content["ModifiedBy"] = userPath;
        await content.SaveAsync();
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41966083

复制
相关文章

相似问题

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