Javascript 在将文件传递到服务器端之前,在客户端处理文件大小

Javascript 在将文件传递到服务器端之前,在客户端处理文件大小,javascript,angularjs,Javascript,Angularjs,我只想验证客户端的文件大小。下面的代码只处理成功。我也想处理文件大小。当前,如果文件大于2MB,500(内部服务器错误)将返回后台 是否有办法手动处理并将错误设置为“最大文件大小应为2MB” 提前谢谢 注意:下面的代码是AngularJS的一部分 file.upload(url, function(data) { if(data.success !== true) { $scope.$apply(function() { $scope.design

我只想验证客户端的文件大小。下面的代码只处理成功。我也想处理文件大小。当前,如果文件大于2MB,500(内部服务器错误)将返回后台

是否有办法手动处理并将错误设置为“最大文件大小应为2MB”

提前谢谢

注意:下面的代码是AngularJS的一部分

file.upload(url, function(data) {
    if(data.success !== true) {
        $scope.$apply(function() {
            $scope.design.pdf.status = '';
            $scope.errors.pdf = data.data;
        });
        return;
    }
    $scope.$apply(function() {
        $scope.design.pdf = {
            status: 'uploaded',
            file: data.data.name,
            name: data.data.original,
            size: data.data.size
        }
    });
});

我假设您使用了一个
input type='file'
按钮。 您可以创建一个指令,该指令将在按钮更改时绑定到按钮并获取大小

该指令:

app.directive('customUpload', function(){
  return {
    restrict: 'A',
    link: function(scope, element, attrs){
        element.on('change', function(){
          //size in bytes
          var size = element[0].files[0].size;
          console.log(size);
          //do something with the file
        });
      }
    };
});
以及html:

<input type='file' custom-upload>

以下是plunker中的所有代码:

查看此文件上载组件。可以这样做,但依赖于浏览器。现在必须使用跨浏览器解决方案。这是一种跨浏览器解决方案,因为它处理不支持FileReader组件的浏览器。谢谢,我根据您的示例做了一些更改。