首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用AngularFire上传文件到Firebase存储?

如何使用AngularFire上传文件到Firebase存储?
EN

Stack Overflow用户
提问于 2017-02-15 07:50:48
回答 1查看 1.4K关注 0票数 0

我已经观看和阅读了一堆视频和教程,但我收到了403错误。

我使用的是Angular 1。

首先,我创建了一个Angular指令,因为ng-model不能处理文件。我将我的指令命名为file-model

代码语言:javascript
复制
app.directive('fileModel',['$parse', function ($parse){
  return {
    restrict: 'A',
    link: function (scope, element, attrs) {
      element.bind('change', function () {
        $parse(attrs.fileModel)
        .assign(scope, element[0].files[0])
        scope.$apply();
      })
    }
  }
}]);

然后我在HTML模板中使用了我的指令:

代码语言:javascript
复制
<form ng-submit="uploadFile(file)">
      <input type="file" accept="txt" file-model="file" class="form-control">
      <button type="submit" class="btn btn-primary">Upload File</button>
</form>

我在控制器中做了一个处理程序:

代码语言:javascript
复制
  app.controller('myController', ['$scope', '$firebaseStorage', function($scope, $firebaseStorage) {

  // Create a Firebase Storage reference
  var storage = firebase.storage();
  var storageRef = storage.ref();
  var filesRef = storageRef.child('files');

  $scope.uploadFile = function(file) {
    console.log("Let's upload a file!");
    console.log($scope.file);
    var storageRef = firebase.storage().ref("files");
    $firebaseStorage(filesRef).$put($scope.file);
  };

}]);

最后,我将Firebase存储规则设置为"public":

代码语言:javascript
复制
service firebase.storage {
  match /b/myFirebaseProject.appspot.com/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

运行所有这些,我可以选择我的测试文件,单击Upload File,然后该文件加载到$scope中。我的指令起作用了。但随后我收到一条错误消息:

代码语言:javascript
复制
POST https://firebasestorage.googleapis.com/v0/b/myFirebaseProject.appspot.com/o?name=files 403 ()

我尝试在Firebase存储中创建一个files文件夹,但我得到了相同的403错误。

谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2017-02-16 01:10:00

您发布的规则不是公开的,它们需要身份验证。相反,您希望使用类似以下内容:

代码语言:javascript
复制
service firebase.storage {
  match /b/myFirebaseProject.appspot.com/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

或者在你的应用中使用Firebase身份验证。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42238362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档