Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 信号聊天应用程序发送图像_C#_Asp.net Mvc_Signalr - Fatal编程技术网

C# 信号聊天应用程序发送图像

C# 信号聊天应用程序发送图像,c#,asp.net-mvc,signalr,C#,Asp.net Mvc,Signalr,我根据教程构建了SingnalR聊天应用程序MVC5 signalR 2.0:- 尽管有没有发送图片/附件的方法,但所有这些都工作得非常出色?图像实际显示在屏幕上吗?否。信号器是一种文本基信号。 您所能做的就是发送URL、json。。 或者你可以考虑转移一个图像的Base64字符串表示,但我敢打赌它不是非常流行的用例。 < P> Jabbr(基于IrrSalr的基于IRC的基于Web的聊天系统)的方式是将文件从客户端上传到Azure Bulb容器(通过服务器端上传处理程序)然后将直接BLOBUR

我根据教程构建了SingnalR聊天应用程序MVC5 signalR 2.0:-
尽管有没有发送图片/附件的方法,但所有这些都工作得非常出色?图像实际显示在屏幕上吗?

否。信号器是一种文本基信号。 您所能做的就是发送URL、json。。 或者你可以考虑转移一个图像的Base64字符串表示,但我敢打赌它不是非常流行的用例。

< P> Jabbr(基于IrrSalr的基于IRC的基于Web的聊天系统)的方式是将文件从客户端上传到Azure Bulb容器(通过服务器端上传处理程序)然后将直接BLOBURI发送回直接访问该文件的所有客户端


查看此处的代码:

我建议您-通过WebApi(无信号器)发送图像和消息,然后通过信号器通知聊天中的所有参与者。

使用文件输入引导插件(krajee)上载此文件 您也可以不使用此插件上传文件

   @section Page{

<script src="~/Scripts/bootstrap-switch.min.js"></script>
<script src="~/Scripts/Uploader/fileinput.js"></script>
<link href="~/Scripts/Uploader/fileinput.css" rel="stylesheet" />
<script>
    var itemHub = $.connection.ItemHub;
$(document).ready(function() {
    $.connection.hub.start().done(function() {

       //do any thing

    });
     $("#fileinput").fileinput({
         allowedFileExtensions: ["jpg", "png", "gif", "jpeg"],
         maxImageWidth: 700,
         maxImageHeight: 700,
         resizePreference: 'height',
         maxFileCount: 1,
         resizeImage: true
     });


     $("#fileinput").on('fileloaded', function (event, file, previewId, index, reader) {


         var readers = new FileReader();
         readers.onloadend = function () {
             $(".file-preview-image").attr('src', readers.result);
         }
         readers.readAsDataURL(file);
     });




    $('#btnSave').click(function() {
        var imagesJson = $('.file-preview-image').map(function () {
            var $this = $(this);
            return {
                image: $this.attr('src'),
                filename: $this.attr('data-filename')
            };
        }).toArray();

        itemHub.server.getByteArray(imagesJson);
    });
});

</script>
}
@节页{
var itemHub=$.connection.itemHub;
$(文档).ready(函数(){
$.connection.hub.start().done(函数()){
//做任何事
});
$(“#fileinput”).fileinput({
允许的文件扩展名:[“jpg”、“png”、“gif”、“jpeg”],
最大宽度:700,
最大高度:700,
resizePreference:“高度”,
maxFileCount:1,
调整图像大小:true
});
$(“#fileinput”).on('fileloaded',函数(事件、文件、预览、索引、读取器){
var readers=newfilereader();
readers.onloadend=函数(){
$(“.file预览图像”).attr('src',readers.result);
}
readers.readAsDataURL(文件);
});
$('#btnSave')。单击(函数(){
var imagesJson=$('.file预览图像').map(函数(){
var$this=$(this);
返回{
图像:$this.attr('src'),
文件名:$this.attr('data-filename'))
};
}).toArray();
itemHub.server.getByteArray(imagesJson);
});
});
}
集线器类别代码

[HubName("ItemHub")]
public class ItemHub : Hub
{
      public void GetByteArray(IEnumerable<ImageData> images)
      {
         foreach (var item in images ?? Enumerable.Empty<ImageData>())
         {
            var tokens = item.Image.Split(',');
            if (tokens.Length > 1)
            {
               byte[] buffer = Convert.FromBase64String(tokens[1]);

            }
          }
      }
}

public class ImageData
{
    public string Description { get; set; }
    public string Filename { get; set; }
    public string Image { get; set; }
}
[HubName(“ItemHub”)]
公共类ItemHub:Hub
{
public void GetByteArray(IEnumerable图像)
{
foreach(图像中的变量项??Enumerable.Empty())
{
var tokens=item.Image.Split(',');
如果(tokens.Length>1)
{
byte[]buffer=Convert.FromBase64String(标记[1]);
}
}
}
}
公共类图像数据
{
公共字符串说明{get;set;}
公共字符串文件名{get;set;}
公共字符串图像{get;set;}
}

我认为您实际上是在通过信号器发送指向资源的URL。如果人们使用web api,则无法进行一对一的文件传输。无论如何,如何通过web api传输文件?@Mikhail您能详细说明您的答案并提供您的答案的原因吗?是否有“Hello World”这样的例子?