前端无法像原生APP一样直接操作本地文件,否则的话打开个网页就能把用户电脑上的文件偷光了,所以需要通过用户触发,用户可通过以下三种方式操作触发:
- 通过input type=”file” 选择本地文件
- 通过拖拽的方式把文件拖过来
- 在编辑框里面复制粘贴
如果是通过第二种拖拽的方式,应该怎么读取文件呢?如下html(样式略):
1 | <div class="img-container"> |
这将在页面显示一个框:
然后监听它的拖拽事件:
1 | $(".img-container").on("dragover", function (event) { |
数据在drop事件的event.dataTransfer.files里面,拿到这个File对象之后就可以和输入框进行一样的操作了,即使用FileReader读取,或者是新建一个空的formData,然后把它append到formData里面。
第三种见下篇