日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js实现文件上传、文件预览、拖拽上传的方法

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js实现文件上传、文件预览、拖拽上传的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、文件上傳

1、上傳的html

我們可以使用input實現文件上傳

<input type="file" id="upload">

2、訪問上傳的文件

通過dom訪問

const input = document.querySelector("#upload"); const files = input.files;

通過onchange事件訪問

const input = document.querySelector("#upload"); input.addEventListener('change',function(){// 通過onchange事件獲取files,函數要使用function定義,箭頭函數this指向父級作用域const files = this.files; },false);input.addEventListener('change',(e) => {// 這個本質還是通過Dom獲取文件const files = e.target.files; },false);

3、自定義input

通常,我們在實際的開發中不會真的去使用input標簽原本的樣式,我們需要實現自己想要的按鈕,或者其他的樣式.這個時候,我們需要對input的樣式進行定制.input上傳,無非就是點擊input的按鈕=>彈出彈窗=>選擇文件=>獲取文件=>完成上傳這么一個過程.如果我們自己寫一個button,用自定義的button觸發input就可以代替input進行上傳文件了.所以我們可以隱藏input,用任意dom元素通過click代理input的點擊事件.原理就說到這里.

const input = document.querySelector("#upload"); /* 通過調用input.click(),可以喚起文件選擇彈窗, * 所以你可以在button的點擊事件里去調用這個方法,達到代理的目的 */ input.click();

二、文件預覽

方法1:通過FileReader實現

const input = document.querySelector("#upload"); input.addEventListener('change',function(){const files = this.files;const fileList = Object.entries(files).map(([_,file]) => {const reader = new FileReader();reader.readAsDataURL(file);reader.onload = (e) => {file.preview = e.target.result;}return file;});/* * file中的preview存的就是可以預覽使用url,如果你需要保證fileList的順序,* 請不要使用這種方式,你可以采用索引的方式存儲,來保證它的順序一致性*/console.log(fileList); },false);

方法2:通過window.URL.createObjectURL()實現

const input = document.querySelector("#upload"); input.addEventListener('change',function(){const files = this.files;const fileList = Object.entries(files).map(([_,file]) => {const preview = window.URL.createObjectURL(file);file.preview = preview;// 需要在合適的實際進行銷毀,否則只有在頁面卸載的時候才會自動卸載.// window.URL.revokeObjectURL(preview);return file;});/* * file中的preview存的就是可以預覽使用url*/console.log(fileList); },false);

三、拖拽上傳

// 此處定義一個drop容器(省略),并取到該元素; const dropBox = document.querySelector("#drop"); dropBox.addEventListener("dragenter",dragEnter,false); dropBox.addEventListener("dragover",dragOver,false); dropBox.addEventListener("drop",drop,false);function dragEnter(e){e.stopPropagation();e.preventDefault(); }function dragOver(e){e.stopPropagation();e.preventDefault(); }function drop(e){// 當文件拖拽到dropBox區域時,可以在該事件取到filesconst files = e.dataTransfer.files; }

總結

以上是生活随笔為你收集整理的js实现文件上传、文件预览、拖拽上传的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。