通过使用文件 API,web 内容可以要求用户选择本地文件,然后读取这些文件的内容。这种选择可以通过使用 HTML ">
元素或通过拖放来完成。
你可以隐藏公认难看的文件 元素并显示你自己的界面来打开文件选择器,然后显示哪个或哪些文件被用户选中了。你可以通过给 input 元素添加 display:none
的样式,再调用 元素的 click() 方法来实现。
- <input
- type="file"
- id="file"
- multiple
- accept="image/*"
- style="display:none" />
- <button id="uploadBut" type="button">选择一些文件button>
- const uploadBut = document.getElementById("uploadBut");
- const file = document.getElementById("file");
-
- // 用户点击文件上传按钮
- uploadBut.addEventListener(
- "click",
- (e) => {
- if (file) {
- file.click();
- }
- },
- false,
- );
-
- // input type:file 的change事件触发,执行拿到上柴男文件列表
- file.addEventListener('change', () => {
- console.log(file.files);
- })
<div class="dropbox">拖拽上传文件div>
- let dropbox = document.querySelector('.dropbox')
- dropbox.addEventListener("dragenter", dragenter, false)
- dropbox.addEventListener("dragover", dragover, false)
- dropbox.addEventListener("drop", drop, false)
- dropbox.addEventListener('dragleave', dragleave, false)
-
- function dragenter(e) {
- e.stopPropagation();
- e.preventDefault();
- }
-
- // 进入拖拽容器
- function dragover(e) {
- e.stopPropagation();
- e.preventDefault();
-
- }
-
- // 离开拖拽容器
- function dragleave(e) {
- e.stopPropagation();
- e.preventDefault();
-
- }
-
- // 将拖拽标签放在拖拽容器上(鼠标松开)
- function drop(e) {
- e.stopPropagation();
- e.preventDefault();
-
- const dt = e.dataTransfer;
- const files = dt.files;
- console.log(dt.files);
-
-
- }