【问题标题】:AngularJS + Firebase Upload profile imageAngularJS + Firebase 上传个人资料图片
【发布时间】:2015-05-22 01:51:52
【问题描述】:

我有一个 JavaScript 图片上传器,它将上传一张图片并给我图片 src。我需要将此值保存在我的 FireBase 数据库中以供当前正在创建的用户使用。

我尝试将 img.src 输出到隐藏输入,但这似乎不起作用。像这样:

$('.userImageValue').val(img.src);

<input class="userImageValue" ng-model="data.userImage" style="display: none;">

我只是想知道,一旦将值添加到它可以工作的不可见输入中,我是否会更改该值。那么在插入 src 值后如何才能最好地使输入“注册”?

这是创建新用户的控制器。

  $scope.list = $firebaseArray(new Firebase("https://my-db.firebaseio.com/users"));

  // Create user button  
  $scope.add_new_user = function() {
    console.log($scope.data);
    $scope.list.$add($scope.data);
    $scope.data = {};
  }

这是页面上的输入,当前使用上述代码并为正在创建的当前用户保存一个新字段。

<input id="firstname" type="text" ng-model="data.firstname" class="form-control" placeholder="First name">

这是我坚持的部分我需要将下面代码中 img.src 的值保存为 FireBase DB 中的新字段供用户使用目前正在创建。

  var userImageUploader = document.getElementById('userImageUploader');

  userImageUploader.addEventListener('change', function(e) {
    var file = userImageUploader.files[0];
    var imageType = /image.*/;

    if (file.type.match(imageType)) {
      var reader = new FileReader();
      reader.onload = function(e) {
        var img = new Image();
        img.src = reader.result;

      }
      reader.readAsDataURL(file);
    }
  });

我希望这是有道理的,并在此先感谢您!

【问题讨论】:

  • “注册”不起作用,因为您使用 jquery 将值插入到绑定到范围变量的输入中。我认为这个问题/它的某些变体以前已经回答过,我会尝试找到一些例子。
  • 这是另一个question的相同症状

标签: javascript jquery angularjs firebase


【解决方案1】:

您可能需要考虑对图像部分使用 Parse。

1) 它还有一个免费层,但存储空间比 firebase 免费层大得多,很快就会被图像耗尽。 2) 它有更好的图像处理工具。

【讨论】:

  • 这个答案与这个问题并不真正相关,因为@BtrCSowl 不是在 Firebase 上存储实际的图像文件,而是图像的 src url。 Firebase 是一个 nosql 数据库(键/值),而不是对象存储服务。这意味着您不能直接将图像文件存储在 Firebase 中。但是,您可以在 Firebase 中将 大量 图像存储为 base64 编码字符串。但是,将图像转换为 base64 字符串需要一点时间,然后再转换回来,所以这不是最好的方法。
猜你喜欢
  • 2020-11-02
  • 2017-05-04
  • 1970-01-01
  • 2020-01-10
  • 2014-04-14
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 2019-10-17
相关资源
最近更新 更多