Vue读取文件名、文件大小和媒体时长
  TEZNKK3IfmPf 2023年11月15日 27 0


<template>

  <div id="app">
    <input type="file"
      @change="handleChange" />

    <audio controls="true"  @loadeddata="handleLoad"
      :src="url">
    </audio>

  </div>
</template>

<script>
import { secondsToTime, byteToText, getObjectURL } from "./util.js";

export default {
  name: "app",

  data() {
    return {
      url: "",
    };
  },

  methods: {
    handleLoad(event) {
      let duration = event.target.duration;
      console.log(duration, secondsToTime(duration));
    },

    handleChange(event) {
      let file = event.target.files[0];

      console.log(file.name);
      console.log(file.size, byteToText(file.size));
      let url = getObjectURL(file);
      console.log(url);
      this.url = url;
    },
  },
};
</script>

用到的工具函数

// util.js

/**
 * 秒 转文本显示 x时y分z秒
 * @param {} secs
 */
export function secondsToTime(secs) {
  let hoursDiv = secs / 3600;
  // 向下取整
  let hours = Math.floor(hoursDiv);

  let minutesDiv = (secs % 3600) / 60;
  let minutes = Math.floor(minutesDiv);

  // 向上取整
  let seconds = Math.ceil((secs % 3600) % 60);

  if (seconds > 59) {
    seconds = 0;
    minutes = Math.ceil(minutesDiv);
  }

  if (minutes > 59) {
    minutes = 0;
    hours = Math.ceil(hoursDiv);
  }

  let timeStr = "";

  if (hours > 0) {
    timeStr += `时`;
  }
  if (minutes > 0) {
    timeStr += `分`;
  }
  if (seconds > 0) {
    timeStr += `秒`;
  }
  return timeStr;
}

/**
 * 字节大小转显示文本
 * @param {} size
 */
export function byteToText(size) {
  let mb = Math.floor(size / (1024 * 1024));
  let kb = Math.floor(size / 1024);

  if (mb > 0) {
    return (size / (1024 * 1024)).toFixed(2) + "MB";
  } else if (kb > 0) {
    return (size / 1024).toFixed(2) + "KB";
  } else {
    return size.toFixed(2) + "B";
  }
}

/**
 * 创建临时url
 * @param {*} file
 */
export function getObjectURL(file) {
  var url = null;
  if (window.createObjectURL != undefined) {
    // basic
    url = window.createObjectURL(file);
  } else if (window.URL != undefined) {
    // mozilla(firefox)
    url = window.URL.createObjectURL(file);
  } else if (window.webkitURL != undefined) {
    // webkit or chrome
    url = window.webkitURL.createObjectURL(file);
  }
  return url;
}


参考
怎样获得html5的audio组件加载的MP3文件的总时长

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月14日   49   0   0 Macchrome
  TEZNKK3IfmPf   2024年03月29日   65   0   0 chrome
TEZNKK3IfmPf