以angularjs格式化文件大小

时间:2018-03-23 10:35:57

标签: javascript html angularjs

jsfiddle

如果我上传超过2MB的文件,则不接受。我的需要是,

1)例如,如果我上传5MB文件,我需要转换小于50kb或更少。

2)如果文件大小很大,它需要花费更多时间来加载,并且破坏了我的性能。

那么如果我上传的文件大小超过5或10MB,我该如何将文件大小转换为小于KB。

$(function() {
  var fileInput = $('.upload-file');
  var maxSize = fileInput.data('max-size');
  $('.upload-form').submit(function(e) {
    if (fileInput.get(0).files.length) {
      var fileSize = fileInput.get(0).files[0].size; // in bytes
      if (fileSize > maxSize) {
        alert('file size is more then' + maxSize + ' bytes');
        return false;
      } else {
        alert('file size is correct- ' + fileSize + ' bytes');
      }
    } else {
      alert('choose file, please');
      return false;
    }

  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form class="upload-form">
  <input class="upload-file" data-max-size="2048" type="file">
  <input type=submit>
</form>

angularjs中还有其他最简单的方法吗?有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

很抱歉,但是没有,压缩所有文件没有简单的方法,否则它将是常态。许多文件格式已经使用压缩来保持文件大小不变,例如PNG,JPEG,MP3,MS Office文档等,这些都可以在这里列出。

如果文件已经压缩,那么可能没有任何压缩量可以大大改善。

最大上传大小通常由服务器控制,上传到上传时间由客户端和主机之间的网络控制。如果用户试图通过良好的3G连接以大约6Mbps的速度上传10Mb文件,则需要大约8秒钟。我害怕,不管怎么回事。

你唯一能做的就是管理用户的期望,展示加载微调器并让他们等待。现代浏览器允许您使用XMLHttpRequest(AJAX)上传文件,允许页面在上传过程中继续执行其他操作。