--- title: "图片预览" date: "2020-04-22T09:04:15+08:00" tags: ["JavaScript"] keywords: ["图片预览", "FileReader"] categories: ["Tech"] slug: "preview-image" dropCap: false --- ## 需求 今天来看一个挺常见的需求,上传图片时页面展示选择的图片,具体实现效果可以点击下面的「上传图片」按钮试试👇~(只能选择 .png 或 .jpeg 格式图片) > 按钮设计源自 [CodePen](https://codepen.io/sfoxy/pen/XpOoJe)。 ## 实现 ### HTML 首先是要使用的标签,上传文件需要用到 `` 标签,并且指定属性 `type` 的值为 `file`。 既然是预览图片,那么还需要指定选择文件的类型,使用 `accept` 属性可以规定..期望..的文件类型,为啥是「期望」呢?因为这只表示触发控件后默认允许选中的文件类型,比如在 MacOS 上,刁钻的用户仍可以在唤出的选择文件窗口中通过`选项`➡️`格式:所有文件`来选择其它类型的文件上传👿: ![choose-file.png](/images/preview-image:choose-file.png "仍可选择非指定类型的文件") 这就要求在 JavaScript 中还要判断用户选择的文件类型是否合法,后面会说到,先指定期望的类型为 PNG 或 JPG 格式的图片。并且,使用 `` 标签时常用的做法是与 `