2012-04-03 17 views

Odpowiedz

20

SignalR służy do przesyłania wiadomości w czasie rzeczywistym, bez przesyłania plików.

+2

Założono, że chcę zbudować strumień, który mógłby zostać przekazany do komponentu po stronie serwera, który wymagałby możliwości wyszukiwania w dużym pliku, w którym klient jest przeglądarką z interfejsem JS API. Co powinienem użyć, aby wprowadzić to w sposób mało wydajny? – ehdv

+0

Przesyłanie strumieniowe postu do punktu końcowego webapi działałoby dobrze. W rzeczywistości, podczas przetwarzania może wywoływać zdarzenia push dotyczące statusu przetwarzania po stronie serwera w czasie rzeczywistym, jeśli powiadomi Twój koncentrator, aby przesłać go do klienta podczas sprawdzania strumienia. – Bon

1

Przesyłanie tego pliku przy użyciu wtyczki bootstrap do wprowadzania danych (krajee) Możesz również przesłać plik bez korzystania z tej wtyczki.

@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> 
    } 

Hub kod klasy

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