代码之家  ›  专栏  ›  技术社区  ›  Bin4ry

Azure Web App Bot-访问本地资源

  •  0
  • Bin4ry  · 技术社区  · 7 年前

    enter image description here

    将图像发送给用户的源代码

            var imgMessage = context.MakeMessage();
    
            var attachment = new Attachment();
            attachment.ContentUrl = $"{HttpContext.Current.Request.Url.Scheme}://{HttpContext.Current.Request.Url.Authority}/Resources/{InvocationName}/{InvocationNameExtension}.jpg";
            attachment.ContentType = "image/jpg";
            attachment.Name = "Image";
    
            context.PostAsync(attachment.ContentUrl);
    

    ttps://xxxx.azurewebsites.net/Resources/img/Cafeteria.jpg

    2>Adding file (xxxx\bin\Resources\img\Cafeteria.jpg).
    

    文件在服务器上,但无法访问。我应该如何包含一个位于.csproj中的图像?由于独立性,我不想引用外部URL。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Bin4ry    7 年前

    将构建操作更改为:“嵌入式资源”。

            string resourceFile = ResourceManager.FindResource(InvocationName, InvocationNameExtension);
            string resourceFileExtension = ResourceManager.GetResourceExtension(resourceFile);
    
            var attachment = new Attachment();
            attachment.ContentUrl = BuildImageUrl(resourceFile, resourceFileExtension);
            attachment.ContentType = $"image/{resourceFileExtension}";
    
    
    
        private string ConvertToBase64(string resourceFile) => Convert.ToBase64String(ResourceManager.GetBytes(resourceFile));
    
        private string BuildImageUrl(string resourceFile, string resourceFileExtension) => "data:image/" + resourceFileExtension + ";base64," + ConvertToBase64(resourceFile);
    

    通过这种方法,我可以通过base64将图像的内容直接发送给用户。很有魅力