ASP.NET MVC - загрузка файла с помощью SignalR

Я хочу загрузить файл с клиента на сервер. Есть ли способ загрузить файл с SignalR или мне нужен контроллер для этого?

Ответ 1

SignalR предназначен для обмена сообщениями в режиме реального времени, не загружая файлы.

Ответ 3

Загрузка этого файла с использованием загрузочного модуля загрузки (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>
    }

Код класса концентратора

    [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; }
    }