Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Leggere e spezzare il contenuto di un file

    Buongiorno,
    nella pagina Html del client ho un oggetto Input che seleziona un file (può essere di tipo diverso, con una dimensione che va da alcuni Mb a 30 Mb).
    Avrei bisogno di prendere i primi 16 Mb del contenuto e metterli in un oggetto Textbox, quindi la rimanenza (se c'è) in un secondo oggetto Textbox.
    Non conosco Javascript, sto leggendo un po' di esempi, ho intuito che bisogna usare FileReader e Slice ma non riesco a mettere insieme un esempio.
    Potreste aiutarmi per favore?
    Grazie mille!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,035
    Ciao e benvenuto..
    Quello che chiedi per un neofita non è facile, prova a seguire questa guida che tratta di filereader (guida 102) e di slice (guida 103) e inizia a lavorarci sopra e se ti blocchi prova a chiedere. Che qualcuno lo faccia per te è molto improbabile
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Purtroppo ho gia letto quelle due guide ed ho realizzato che per capirci qualcosa dovrei partire dall'inizio.
    Il mio linguaggio è Visual Basic ed è completamente diverso.
    Grazie lo stesso

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,261
    Inizia a scrivere un po' di codice. Poi vediamo dove arrivi e dove ti blocchi.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Nelle mie ricerche ho trovato questo esempio, a me basta splittare una volta raggiunti i 16 Mb e non capisco come fare:

    codice:
    <style>
      #byte_content {
        margin: 5px 0;
        max-height: 100px;
        overflow-y: auto;
        overflow-x: hidden;
      }
      #byte_range { margin-top: 5px; }
    </style>
    
    <input type="file" id="files" name="file" /> Read bytes: 
    <span class="readBytesButtons">
      <button data-startbyte="0" data-endbyte="4">1-5</button>
      <button data-startbyte="5" data-endbyte="14">6-15</button>
      <button data-startbyte="6" data-endbyte="7">7-8</button>
      <button>entire file</button>
    </span>
    <div id="byte_range"></div>
    <div id="byte_content"></div>
    
    <script>
      function readBlob(opt_startByte, opt_stopByte) {
    
        var files = document.getElementById('files').files;
        if (!files.length) {
          alert('Please select a file!');
          return;
        }
    
        var file = files[0];
        var start = parseInt(opt_startByte) || 0;
        var stop = parseInt(opt_stopByte) || file.size - 1;
    
        var reader = new FileReader();
    
        // If we use onloadend, we need to check the readyState.
        reader.onloadend = function(evt) {
          if (evt.target.readyState == FileReader.DONE) { // DONE == 2
            document.getElementById('byte_content').textContent = evt.target.result;
            document.getElementById('byte_range').textContent = 
                ['Read bytes: ', start + 1, ' - ', stop + 1,
                 ' of ', file.size, ' byte file'].join('');
          }
        };
    
        var blob = file.slice(start, stop + 1);
        reader.readAsBinaryString(blob);
      }
      
      document.querySelector('.readBytesButtons').addEventListener('click', function(evt) {
        if (evt.target.tagName.toLowerCase() == 'button') {
          var startByte = evt.target.getAttribute('data-startbyte');
          var endByte = evt.target.getAttribute('data-endbyte');
          readBlob(startByte, endByte);
        }
      }, false);
    </script>
    Ultima modifica di ciro78; 03-05-2020 a 10:36 Motivo: tag code

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,035
    Prova a togliere gli altri tasti e mettere solo questo
    codice:
    <button data-startbyte="0" data-endbyte="16000000">16MB</button>
    Fermo restando che lo script postato funzioni e che il broser possa supportare 16MG (che nutro qualche dubbio) di elaborazione.



    P.S. Quando posti del codice usa il tasto #
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Grazie,
    io preferirei avere due esempi che possa gestire in autonomia, perchè questo blocco di codice è per me incomprensibile.
    Io ho gia un oggetto di input che seleziona un file e mette in contenuto in una variabile del browser, anche se è superiore a 16 Mb.
    Ho un codice per valutare la dimensione del contenuto e limitarla a 16 Mb:

    codice:
            function upload_change(oFile) {
                for (var i = 0; i < oFile.files.length; i++) 
                    {
                    if (oFile.files[i].size > 16000000) {
                        alert('il file caricato non deve superare 16 Mb')
                        oFile.value = "";  // clears list
                        return false;
                    }
                }
                return true;
            }
    Mi servirebbe modificarlo per prelevare il contenuto oltre i 16 Mb e metterlo in un secondo oggetto di input invisibile.
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.