Skip to main content
All docs
V25.1
  • BlazorChatMessage.Files Property

    Returns a collection of uploaded files.

    Namespace: DevExpress.AIIntegration.Blazor.Chat

    Assembly: DevExpress.AIIntegration.Blazor.Chat.v25.1.dll

    NuGet Package: DevExpress.AIIntegration.Blazor.Chat

    Declaration

    public List<AIChatUploadFileInfo> Files { get; }

    Property Value

    Type Description
    List<AIChatUploadFileInfo>

    The collection of uploaded files.

    Remarks

    Use the Files property to obtain information about the files attached to a message.

    <DxAIChat CssClass="demo-chat" Initialized="ChatInitialized">
        <MessageTemplate>
            <div class="@GetMessageClasses(context)">
                @if(context.Typing) {
                    <span>Loading...</span>
                } else {
                    <div class="demo-chat-content">
                        @context.Content
                            <div>
                                @if(context.Files != null && context.Files.Count > 0) {
                                    foreach(var file in context.Files) {
                                        if(file.Type != null && file.Type.Contains("image")) {
                                            <div>
                                                <img src="@GetImageSrc(file)" style="max-width: 100px; max-height: 100px;" />
                                            </div>
                                        }
                                    }
                                }
                            </div>
                    </div>
                }
            </div>
        </MessageTemplate>
    </DxAIChat>
    
    @code {
        string GetMessageClasses(BlazorChatMessage message) {
            if(message.Role == ChatMessageRole.Assistant) {
                return "demo-chat-message demo-assistant-message";
            } else if(message.Role == ChatMessageRole.User) {
                return "demo-chat-message demo-user-message";
            } else if(message.Role == ChatMessageRole.Error) {
                return "demo-chat-message demo-error-message";
            }
            return "demo-chat-message";
        }
    
        private string GetImageSrc(AIChatUploadFileInfo file) {
            var base64 = Convert.ToBase64String(file.Data.ToArray());
            return $"data:{file.Type};base64,{base64}";
        }
    
        void ChatInitialized(IAIChat chat) {
            var filePath = "C:\\Users\\Public\\images\\flowers.jpg";
    
            var fileBytes = File.ReadAllBytes(filePath);
    
    
            var attachedFiles = new List<AIChatUploadFileInfo> {
                new AIChatUploadFileInfo(
                    name: Path.GetFileName(filePath),
                    type: "image/jpeg",
                    size: fileBytes.Length,
                    data: new ReadOnlyMemory<byte>(fileBytes)
                )
            };
            chat.LoadMessages(new[] {
                new BlazorChatMessage(Microsoft.Extensions.AI.ChatRole.User, "Hello, AI!"),
                new BlazorChatMessage(Microsoft.Extensions.AI.ChatRole.Assistant, "Hey there, human! What's on your mind? 😊", attachedFiles)
            });
        }
    }
    

    AI Chat - Process Attached Files

    See Also