返回

图片视频本地预览,初级指南

前端

本地预览是指在文件上传到服务器之前,先在本地对文件进行预览。这种方式可以让我们更好地控制上传的内容,避免上传不必要的文件。

本地预览图片的方法

1. 使用HTML5的FileReader对象

FileReader对象是一个内置的HTML5对象,它可以读取本地文件并将其转换为数据URL。以下是如何使用FileReader对象来预览图片:

<input type="file" id="file-input" accept="image/*">
<img id="preview" src="" alt="Preview">

<script>
  const fileInput = document.getElementById('file-input');
  const preview = document.getElementById('preview');

  fileInput.addEventListener('change', () => {
    const file = fileInput.files[0];
    const reader = new FileReader();

    reader.onload = () => {
      preview.src = reader.result;
    };

    reader.readAsDataURL(file);
  });
</script>

2. 使用JavaScript的URL.createObjectURL()方法

URL.createObjectURL()方法可以将一个本地文件转换为一个URL,然后我们就可以使用这个URL来预览图片。以下是如何使用URL.createObjectURL()方法来预览图片:

<input type="file" id="file-input" accept="image/*">
<img id="preview" src="" alt="Preview">

<script>
  const fileInput = document.getElementById('file-input');
  const preview = document.getElementById('preview');

  fileInput.addEventListener('change', () => {
    const file = fileInput.files[0];
    const url = URL.createObjectURL(file);

    preview.src = url;
  });
</script>

本地预览视频的方法

1. 使用HTML5的

HTML5的

<input type="file" id="file-input" accept="video/*">
<video id="preview" controls>
  <source src="" type="video/mp4">
</video>

<script>
  const fileInput = document.getElementById('file-input');
  const preview = document.getElementById('preview');

  fileInput.addEventListener('change', () => {
    const file = fileInput.files[0];
    const url = URL.createObjectURL(file);

    preview.querySelector('source').src = url;
    preview.load();
  });
</script>

2. 使用JavaScript的MediaSource API

MediaSource API是一个JavaScript API,它可以让我们在网页上播放本地视频文件。以下是如何使用MediaSource API来预览视频:

<input type="file" id="file-input" accept="video/*">
<video id="preview" controls>
  <source src="" type="video/mp4">
</video>

<script>
  const fileInput = document.getElementById('file-input');
  const preview = document.getElementById('preview');

  fileInput.addEventListener('change', () => {
    const file = fileInput.files[0];
    const url = URL.createObjectURL(file);

    const mediaSource = new MediaSource();
    preview.src = URL.createObjectURL(mediaSource);

    mediaSource.addEventListener('sourceopen', () => {
      const sourceBuffer = mediaSource.addSourceBuffer('video/mp4');

      sourceBuffer.addEventListener('updateend', () => {
        preview.load();
      });

      const reader = new FileReader();

      reader.onload = () => {
        sourceBuffer.appendBuffer(reader.result);
      };

      reader.readAsArrayBuffer(file);
    });
  });
</script>

结语

本地预览是一个非常有用的功能,它可以让我们更好地控制上传的内容,避免上传不必要的文件。本文介绍了图片和视频的本地预览方法,希望对您有所帮助。