--- title: 'FileReader: progress イベント' slug: Web/API/FileReader/progress_event tags: - API - Event - FileReader - ProgressEvent - Reference - Web - progress - イベント translation_of: Web/API/FileReader/progress_event ---
progress
イベントは、 FileReader
がデータを読むときに定期的に発生します。
バブリング | なし |
---|---|
キャンセル可能 | いいえ |
インターフェイス | {{domxref("ProgressEvent")}} |
イベントハンドラープロパティ | {{domxref("FileReader.onprogress")}} |
<div class="example"> <div class="file-select"> <label for="avatar">Choose a profile picture:</label> <input type="file" id="avatar" name="avatar" accept="image/png, image/jpeg"> </div> <img src="" class="preview" height="200" alt="Image preview..."> <div class="event-log"> <label>Event log:</label> <textarea readonly class="event-log-contents"></textarea> </div> </div>
img.preview { margin: 1rem 0; } .event-log-contents { width: 18rem; height: 5rem; border: 1px solid black; margin: .2rem; padding: .2rem; } .example { display: grid; grid-template-areas: "select log" "preview log"; } .file-select { grid-area: select; } .preview { grid-area: preview; } .event-log { grid-area: log; } .event-log>label { display: block; } .event-log-contents { resize: none; }
const fileInput = document.querySelector('input[type="file"]'); const preview = document.querySelector('img.preview'); const eventLog = document.querySelector('.event-log-contents'); const reader = new FileReader(); function handleEvent(event) { eventLog.textContent = eventLog.textContent + `${event.type}: ${event.loaded} bytes transferred\n`; if (event.type === "load") { preview.src = reader.result; } } function addListeners(reader) { reader.addEventListener('loadstart', handleEvent); reader.addEventListener('load', handleEvent); reader.addEventListener('loadend', handleEvent); reader.addEventListener('progress', handleEvent); reader.addEventListener('error', handleEvent); reader.addEventListener('abort', handleEvent); } function handleSelected(e) { eventLog.textContent = ''; const selectedFile = fileInput.files[0]; if (selectedFile) { addListeners(reader); reader.readAsDataURL(selectedFile); } } fileInput.addEventListener('change', handleSelected);
{{ EmbedLiveSample('Live_example', '100%', '300px') }}
仕様書 | 状態 |
---|---|
{{SpecName('File API', '#dfn-progress-event')}} | {{Spec2('File API')}} |
{{Compat("api.FileReader.progress_event")}}