在 SharePoint 中向帖子嵌入图像、视频和文档

了解如何向微博帖子添加 SocialAttachment 对象,这些对象在 SharePoint 社交源中呈现为嵌入图片、视频和文档。

在社交源中,最简单形式的帖子内容只包含文本,但还可以添加嵌入图片、视频和文档。 为此,请在定义帖子的 SocialPostCreationData 对象上使用 Attachment 属性。 帖子可包含一个附件(由 SocialAttachment 对象表示)。

注意

若要向帖子的内容添加提及、标记或链接,请将 SocialDataItem 对象添加到 SocialPostCreationData.ContentItems 属性。 有关详细信息,请参阅如何:在 SharePoint 中向帖子添加提及内容、标签以及网站和文档的链接

本文所述的 API 来自 .NET 客户端对象模型。 如果您使用的是 JavaScript 对象模型等其他 API,则对象名称或相应 API 可能有所不同。 有关指向相关 API 文档的链接,请参阅其他资源

使用代码示例向帖子添加附件的先决条件

本文的代码示例演示了如何将图像、视频和文档附件添加到微博帖子中。 这些示例来自使用以下 SharePoint 程序集的控制台应用程序:

  • Microsoft.SharePoint.Client

  • Microsoft.SharePoint.Client.Runtime

  • Microsoft.SharePoint.Client.UserProfilies

若要使用本文中的示例,需要上传图像、视频和文档。 若要使用视频示例,必须在服务器上启用视频功能,并将视频文件存储在资产库中。 若要在本地环境中使用文档示例,必须在环境中配置 Office Online。 有关详细信息,请参阅 在 SharePoint 中规划数字资产库将 SharePoint 配置为使用 Office Online

有关如何设置开发环境和创建控制台应用程序的说明,请参阅 如何:使用 SharePoint 中的 .NET 客户端对象模型创建和删除帖子以及检索社交源

示例:在 SharePoint 中向帖子嵌入图像

以下代码示例发布了一个包含嵌入式图像的帖子。 它演示了如何执行以下操作:

运行代码前,请先更改 URL 变量的占位符值。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;

namespace EmbedImageInPost
{
    class Program
    {
        static void Main(string[] args)
        {

            // Replace the following placeholder values with the actual values.
            const string serverUrl = "http://serverName/siteName/";
            const string imageUrl = "http://serverName/Shared%20Documents/imageName.jpg";

            // Define the image attachment that you want to embed in the post.
            SocialAttachment attachment = new SocialAttachment()
            {
                AttachmentKind = SocialAttachmentKind.Image,
                Uri = imageUrl
            };

            // Define properties for the post and add the attachment.
            SocialPostCreationData postCreationData = new SocialPostCreationData();
            postCreationData.ContentText = "Look at this!";
            postCreationData.Attachment = attachment;

            try
            {

                // Get the context and the SocialFeedManager instance.
                ClientContext clientContext = new ClientContext(serverUrl);
                SocialFeedManager feedManager = new SocialFeedManager(clientContext);

                // Publish the post. This is a root post to the user's feed, so specify
                // null for the targetId parameter.
                feedManager.CreatePost(null, postCreationData);
                clientContext.ExecuteQuery();
                Console.Write("The post was published.");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.Write("Error publishing the post: " + ex.Message);
                Console.ReadLine();
            }
        }
    }
}

在 SharePoint 中向帖子嵌入视频

以下代码示例发布了一个包含嵌入式视频的帖子。 它演示了如何执行以下操作:

本示例需要服务器启用视频功能,并将视频文件上载到资产库。 有关详细信息,请参阅使用代码示例的先决条件

运行代码前,请先更改 URL 变量的占位符值。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;

namespace EmbedVideoInPost
{
    class Program
    {
        static void Main(string[] args)
        {
            // Replace the following placeholder values with the actual values.
            const string serverUrl = "http://serverName/siteName/";
            const string videoUrl = "http://serverName/Asset%20Library/fileName?Web=1";

            try
            {

                // Get the context and the SocialFeedManager instance.
                ClientContext clientContext = new ClientContext(serverUrl);
                SocialFeedManager feedManager = new SocialFeedManager(clientContext);

                // Get the video attachment from the server.
                ClientResult<SocialAttachment> attachment = feedManager.GetPreview(videoUrl);
                clientContext.ExecuteQuery();

                // Define properties for the post and add the attachment.
                SocialPostCreationData postCreationData = new SocialPostCreationData();
                postCreationData.ContentText = "Look at this!";
                postCreationData.Attachment = attachment.Value;

                // Publish the post. This is a root post to the user's feed, so specify
                // null for the targetId parameter.
                feedManager.CreatePost(null, postCreationData);
                clientContext.ExecuteQuery();

                Console.Write("The post was published.");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.Write("Error publishing the post: " + ex.Message);
                Console.ReadLine();
            }
        }
    }
}

示例:在 SharePoint 中向帖子嵌入文档

以下代码示例发布了一个包含嵌入式文档的帖子。 它演示了如何执行以下操作:

若要在本地环境中使用此示例,必须将环境配置为使用 Office Online。 有关详细信息,请参阅使用代码示例的先决条件。 在其他情况下,可以发布文档的链接,如如何:在 SharePoint 中向帖子添加提及内容、标签以及网站和文档的链接中所述。

运行代码前,请先更改 URL 变量的占位符值。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;

namespace EmbedDocumentInPost
{
    class Program
    {
        static void Main(string[] args)
        {
            // Replace the following placeholder values with the actual values.
            const string serverUrl = "http://serverName";
            const string documentUrl = "http://serverName/Shared%20Documents/fileName.docx";

            try
            {

                // Get the context and the SocialFeedManager instance.
                ClientContext clientContext = new ClientContext(serverUrl);
                SocialFeedManager feedManager = new SocialFeedManager(clientContext);

                // Get the document attachment from the server.
                ClientResult<SocialAttachment> attachment = feedManager.GetPreview(documentUrl);
                clientContext.ExecuteQuery();

                // Define properties for the post and add the attachment.
                SocialPostCreationData postCreationData = new SocialPostCreationData();
                postCreationData.ContentText = "Post with a document.";
                postCreationData.Attachment = attachment.Value;

                // Publish the post. This is a root post to the user's feed, so specify
                // null for the targetId parameter.
                feedManager.CreatePost(null, postCreationData);
                clientContext.ExecuteQuery();
                Console.Write("The post was published.");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.Write("Error publishing the post: " + ex.Message);
                Console.ReadLine();
            }
        }
    }
}

另请参阅