Kontrola strumienia danych

Kontrola strumienia danych
D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 119
0

Witam

Od wczoraj próbuje rozwiązać jeden problem związany z obiektem ArrayBuffer ponieważ chciałbym niebezpośrednio kontrolować przepustowość bitów sczytywanych z pliku json np. aczkolwiek nie udaje mi się to za bardzo przez funkcję fetch. Nadmienię, że dodaje to tego funkcję maxByteLength.

Nie wiem może ten obiekt nie jest dobrą drogą do kontroli strumienia danych ponieważ finalnie chce aby ukazywał się komunikat o zbyt dużym pliku wczytywanym przez usera. Można też zrobić to przez axios, ale wolę wykorzystać React. Ktoś miałby jakąś idee ?

Kopiuj
function connectAndHandleData(){

    const[actualDataState, setDataState] = useState();
    
    useEffect(() => {
        fetch('data.json')
        .then((feedback) => {
    
            feedback.json();
           
            const buffer = new ArrayBuffer(12);
            const arr = new Int32Array(buffer);
            const view = new DataView(buffer);
            
            view.maxByteLength(20);
            console.log(view.byteLength);
    
        }
        )
cerrato
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 9236
0

Skąd się bierze ten plik - pobierasz z serwera/skądś ściągasz, czy użytkownik go wrzuca bezpośrednio z dysku? Bo jeśli tak to możesz po prostu od razu/jawnie sprawdzić rozmiar uploadowanego pliku i jeśli jest większy od wskazanej wartości to wykonać jakąś czynność (komunikat o błędzie, odrzucenie pliku, zapis do logów itp.)

SL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1148
0

IMO masz tu dwa problemy:

  • fetch sciąga ci cały plik, bez sensu jak chcesz ograniczyć rozmiar. Wyobraź sobie, że ktoś wyśle 10GB danych a ty to wszystko przepychasz przez rurę.
  • do tego jeszcz parsujesz to na jsona co jeszcze bardziej zwiększa obciążenie

To tak jakby 20 osobowa rodzina wpakowała ci się do mieszkania po czym mówisz, że jednak jest was za dużo a do tego jeszcze wszystkich sadzasz przy kanapie

Moja rada: pogadaj z AI, to nie brzmi jak cieżki problem dla tej technologii

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 119
0

Tutaj chciałem raczej bezpośrednio kontrolować strumień danych używając do tego BufferArray i max wielkości bufora chyba, że jednak błędnie zinterpretowałem ten obiekt. Plik raczej będzie na serwerze.

SL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1148
1
delform_17 napisał(a):

Tutaj chciałem raczej bezpośrednio kontrolować strumień danych używając do tego BufferArray i max wielkości bufora chyba, że jednak błędnie zinterpretowałem ten obiekt. Plik raczej będzie na serwerze.

Kontrola buforu nic nie daj jeżeli ujście (json.Document) wysysa wszystko z rury. Najpierw musisz nam powiedzieć po co chcesz to robić i czy strumieniowe czytanie JSONa ma sens z twoim zastosowaniu

Warto założyć, że taki plik JSONa może eksplodować kilkukrotnie jeśli sparsujesz go do obietków w pamięci i z 10MB robi się 100MB

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.