function onInput(e) {
let file = e.target.files[0]
let reader = new FileReader()
reader.readerAsArrayBuffer(file)
reader.onprogress = (event) => {
console.log(event.loaded, event.total)
}
reader.onload = () => {
console.log(reader.result)
}
reader.onerror = () => {
console.log(reader.error.code)
}
}
複製代碼
// 只讀取前32字節
let blob = e.target.files[0].slice(0, 32)
let reader = new FileReader()
reader.readerAsArrayBuffer(blob)
複製代碼
引用保存在File或Blob中的數據URL。好處是沒必要把文件讀取到js中而直接可使用。javascript
<div>
<input type="file" name="" oninput="onInput(event)">
<img class="img">
</div>
<script type="text/javascript">
function onInput(e) {
var file = e.target.files[0]
var url = window.URL.createObjectURL(file)
document.querySelector('.img').src = url
}
</script>
複製代碼
<div class="recipient" >come on baby!</div>
<img class="img">
</div>
<script type="text/javascript">
var recipient = document.querySelector('.recipient')
recipient.addEventListener('dragenter', (e) => {
e.preventDefault()
})
recipient.addEventListener('dragover', (e) => {
e.preventDefault()
})
recipient.addEventListener('drop', (e) => {
var file = e.dataTransfer.files[0]
var url = window.URL.createObjectURL(file)
document.querySelector('.img').src = url
e.preventDefault()
})
</script>
複製代碼