google+javascriptbanktwitter@js_bankfacebook@jsbankrss@jsbank






Traitement des fichiers locaux en JavaScript avec HTML5 Dans les articles pr?c?dents JavaScript et exemples de code JavaScript, ACC @ nk ? condition que vous de nombreux postes sur les nouvelles fonctionnalit?s HOT/fonctions en HTML5, tels que:
La mise en cache JavaScript dans HTML5

? Awesome Canvas tiroir avec HTML5

? JavaScript dans HTML5 vs ActionScript 3 de Flash dans le dessin Match - qui gagnent?

? HOT nouvelles API JavaScript avec HTML5
Tout au long de cette JavaScript tutorial, vous ?tes capable de g?rer la fa?on de cr?er, supprimer, lire, ?crire et d'interroger les fichiers locaux avec JavaScript sur HTML5 S'il vous pla?t aller ? la page int?rieure pour les instructions compl?tes d?taill?es, des guides et des d?monstrations en direct des exemples de code JavaScript pour HTML5 HTML5 t?l?chargement de fichiers, le t?l?chargement de fichiers JavaScript, fichier JavaScript ouverte, JavaScript fichier en lecture, charger le fichier JavaScript, cr?er un fichier javascript .


G�n�rez vos vid�os d'entreprise par l'IA avec la voix ou simplement du texte



Votre premi�re application vid�o AI GRATUITE ! Automatisez votre premi�re vid�o AI. Cr�ez votre vid�o professionnelle en 5 minutes gr�ce � l'IA. Aucun �quipement ni comp�tence en montage vid�o requis. Production vid�o sans effort pour les sp�cialistes du marketing de contenu.
Application vid�o AI ILLIMIT�E gratuite � port�e de main

Reading files

Now comes the fun part!

After you've obtained a File reference, instantiate a object to read its contents into memory. When the load finishes, the reader's onload event is fired and its result attribute can be used to access the file data.

FileReader includes three options for reading a file, asynchronously:

  • FileReader.readAsBinaryString(fileBlob) - The result property will contain the file's data as a binary string. Every byte is represented by an integer in the range [0..255].
  • FileReader.readAsText(fileBlob, opt_encoding) - The result property will contain the file's data as a text string. By default the string is decoded as 'UTF-8'. Use the optional encoding parameter can specify a different format.
  • FileReader.readAsDataURL(file) - The result property will contain the file's data encoded as a data URL.

Once one of these read methods is called on your FileReader object, the onloadstart, onprogress, onload, onabort, onerror, and onloadend can be used to track its progress.

The example below filters out images from the user's selection, calls reader.readAsDataURL() on the file, and renders a thumbnail by setting the 'src' attribute to a data URL.

<style>
 
.thumb {
    height
: 75px;
    border
: 1px solid #000;
    margin
: 10px 5px 0 0;
 
}
</style>

<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>

<script>
 
function handleFileSelect(evt) {
   
var files = evt.target.files; // FileList object

   
// Loop through the FileList and render image files as thumbnails.
   
for (var i = 0, f; f = files[i]; i++) {

     
// Only process image files.
     
if (!f.type.match('image.*')) {
       
continue;
     
}

     
var reader = new FileReader();

     
// Closure to capture the file information.
      reader
.onload = (function(theFile) {
       
return function(e) {
         
// Render thumbnail.
         
var span = document.createElement('span');
          span
.innerHTML = ['<img class="thumb" src="/javascript/article/Processing_Local_Files_in_JavaScript_with_HTML5.php/', e.target.result,
                           
'" title="', theFile.name, '"/>'].join('');
          document
.getElementById('list').insertBefore(span, null);
       
};
     
})(f);

     
// Read in the image file as a data URL.
      reader
.readAsDataURL(f);
   
}
 
}

  document
.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>

Example: Reading files. Try it!

Try this example with a directory of images!


Slicing a file

In some cases reading the entire file into memory isn't the best option. For example, say you wanted to write an async file uploader. One possible way to speed up the upload would be to read and send the file in separate byte range chunks. The server component would then be responsible for reconstructing the file content in the correct order.

Lucky for us, the File interface supports a slice method to support this use case. The method takes a starting byte as its first argument and a byte offset (length) as its second:

var blob = file.slice(startingByte, length);
reader
.readAsBinaryString(blob);

The following example demonstrates reading chunks of a file. Something worth noting is that it uses the onloadend and checks the evt.target.readyState instead of using the onload event.

<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="file" 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 = opt_startByte || 0;
   
var stop = 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 length =  (stop - start) + 1;
   
var blob = file.slice(start, length);
    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>

Example: Slicing a file. Try it!

Read bytes:

Monitoring the progress of a read

One of the nice things that we get for free when using async event handling is the ability to monitor the progress of the file read; useful for large files, catching errors, and figuring out when a read is complete.

The onloadstart and onprogress events can be used to monitor the progress of a read.

The example below demonstrates displaying a progress bar to monitor the status of a read. To see the progress indicator in action, try a large file or one from a remote drive.

<style>
 
#progress_bar {
    margin
: 10px 0;
    padding
: 3px;
    border
: 1px solid #000;
    font
-size: 14px;
    clear
: both;
    opacity
: 0;
   
-moz-transition: opacity 1s linear;
   
-o-transition: opacity 1s linear;
   
-webkit-transition: opacity 1s linear;
 
}
 
#progress_bar.loading {
    opacity
: 1.0;
 
}
 
#progress_bar .percent {
    background
-color: #99ccff;
    height
: auto;
    width
: 0;
 
}
</style>

<input type="file" id="file" name="file" />
<button onclick="abortRead();">Cancel read</button>
<div id="progress_bar"><div class="percent">0%</div></div>

<script>
 
var reader;
 
var progress = document.querySelector('.percent');

 
function abortRead() {
    reader
.abort();
 
}

 
function errorHandler(evt) {
   
switch(evt.target.error.code) {
     
case evt.target.error.NOT_FOUND_ERR:
        alert
('File Not Found!');
       
break;
     
case evt.target.error.NOT_READABLE_ERR:
        alert
('File is not readable');
       
break;
     
case evt.target.error.ABORT_ERR:
       
break; // noop
     
default:
        alert
('An error occurred reading this file.');
   
};
 
}

 
function updateProgress(evt) {
   
// evt is an ProgressEvent.
   
if (evt.lengthComputable) {
     
var percentLoaded = Math.round((evt.loaded / evt.total) * 100);
     
// Increase the progress bar length.
     
if (percentLoaded < 100) {
        progress
.style.width = percentLoaded + '%';
        progress
.textContent = percentLoaded + '%';
     
}
   
}
 
}

 
function handleFileSelect(evt) {
   
// Reset progress indicator on new file selection.
    progress
.style.width = '0%';
    progress
.textContent = '0%';

    reader
= new FileReader();
    reader
.onerror = errorHandler;
    reader
.onprogress = updateProgress;
    reader
.onabort = function(e) {
      alert
('File read cancelled');
   
};
    reader
.onloadstart = function(e) {
      document
.getElementById('progress_bar').className = 'loading';
   
};
    reader
.onload = function(e) {
     
// Ensure that the progress bar displays 100% at the end.
      progress
.style.width = '100%';
      progress
.textContent = '100%';
      setTimeout
("document.getElementById('progress_bar').className='';", 2000);
   
}

   
// Read in the image file as a binary string.
    reader
.readAsBinaryString(evt.target.files[0]);
 
}

  document
.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>

Example: Monitoring the progress of a read. Try it!

0%

Tip: To really see this progress indicator in action, try a large file or a resource on a remote drive.

References

AIVideo-App.com
Générez vos vidéos d'entreprise par l'IA avec la voix ou simplement du texte

chatGPTaz.com
Parlez à ChatGPT dans votre langue maternelle

AppAIVidéo
Votre première application vidéo AI GRATUITE

Deepfake Video
Deepfake AI Video Maker

Deepfake
Deepfake AI Video Maker

AI Deep Fake
Deepfake AI Video Maker

AI Voice Generator
Most Realistic Text to Speech AI Solutions

AI Voice Generator
Most Realistic Text to Speech AI Solutions

AIvidio
AI Video Mobile Solutions

AIvideos
AI Video Platform & Solutions

AIvedio
AI Video App Maker

Artificial General Intelligence
Ai and higher level Artificial General Intelligence (AGI)

Artificial General Intelligence
Ai and higher level Artificial General Intelligence (AGI)

Faceswap AI en ligne
Échangez des visages, des vidéos, des photos et des GIF instantanément avec de puissants outils d'IA - Faceswap AI Online GRATUIT

Faceswap AI en ligne
Échangez des visages, des vidéos, des photos et des GIF instantanément avec de puissants outils d'IA - Faceswap AI Online GRATUIT

Faceswap AI en ligne
Échangez des visages, des vidéos, des photos et des GIF instantanément avec de puissants outils d'IA - Faceswap AI Online GRATUIT

Powerful AI Presentation PPT Maker for FREE
Build an impressive presentation with our free online AI presentation app

Your next top AI Assistant
Claude AI, developed by Anthropic

Your next top AI Assistant
Claude AI, developed by Anthropic

Temu gratuit 500 $ pour les nouveaux utilisateurs
Claim Free Temu $500 Credit via Affiliate & Influencer Program

Crédits publicitaires TikTok gratuits
Maîtrisez les publicités TikTok pour le marketing de votre entreprise

Crédits publicitaires TikTok gratuits
Maîtrisez les publicités TikTok pour le marketing de votre entreprise

Dall-E-OpenAI.com
Générez automatiquement des images créatives avec l'IA

chatGPT4.win
Parlez à ChatGPT dans votre langue maternelle

Premier produit d'intelligence artificielle d'Elon Musk - Grok/UN.com
Parlez au chatbot Grok AI dans votre langue

Outily.win
Centre d'outils ouvert et gratuit, utilisable par tous et pour tous, avec des centaines d'outils

GateIO.gomymobi.com
Airdrops gratuits à réclamer et à partager jusqu'à 150 000 $ par projet

iPhoneKer.com
Économisez jusqu'à 630 $ à l'achat d'un nouvel iPhone 16

Acheter le robot Tesla Optimus
Commandez votre robot Tesla Bot : Optimus Gen 2 dès aujourd'hui pour moins de 20 000 $

JavaScript par jour


Google Safe Browsing McAfee SiteAdvisor Norton SafeWeb Dr.Web