首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我尝试将文件从Firebase存储的根目录复制到新文件夹的代码不起作用?

为什么我尝试将文件从Firebase存储的根目录复制到新文件夹的代码不起作用?
EN

Stack Overflow用户
提问于 2020-07-13 03:49:36
回答 1查看 42关注 0票数 0

我正在尝试将文件从Firebase存储的根目录复制或移动到文件夹。更具体地说,从users/displayName/uid/到users/displayName/uid/某个文件夹。我读到在Firebase Storage API中没有方法来复制你已经上传的文件,并且你必须下载数据并重新上传。但是,我找不到任何示例代码。因此,我编写了以下代码来尝试实现这一点,但它不起作用。请参阅下面的错误以找出原因。

下面是我写的代码:

代码语言:javascript
复制
const listRef = firebase.storage().ref(`users/${this.state.displayName}/${this.state.uid}`)

listRef.listAll().then((res) => {

    res.items.forEach((itemRef) => {

        firebase.storage().ref(`users/${this.state.displayName}/${this.state.uid}/somefolder`).put(itemRef)
    });
}

).catch(function (error) {
    console.log(error)
});

所以,这段代码不能工作,什么也不会发生。未创建任何文件夹。下面是出现的错误:

代码语言:javascript
复制
FirebaseStorageError {code_: "storage/invalid-argument", message_: "Firebase Storage: Invalid argument in `put` at index 0: Expected Blob or File.", serverResponse_: null, name_: "FirebaseError"}
code: (...)
code_: "storage/invalid-argument"
message: (...)
message_: "Firebase Storage: Invalid argument in `put` at index 0: Expected Blob or File."
name: (...)
name_: "FirebaseError"
serverResponse: (...)
serverResponse_: null
__proto__: Object

显然,put方法需要的是文件或blob,而不是使用listAll()方法获得的项。

关于如何解决此问题并成功地将文件移动或复制到文件夹,您有什么想法吗?真正的代码样本将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-13 04:31:14

不能传递引用put()。根据API documentation,有三种不同的东西可以传递: Blob、Uint8array或ArrayBuffer。

然而,问题是javascript web client SDK没有提供一种直接下载这些格式数据的方法。您将不得不自己弄清楚如何做到这一点,可能是通过getting a download URL,或者将工作卸载到可以使用服务器SDK复制数据的后端。

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

https://stackoverflow.com/questions/62865814

复制
相关文章

相似问题

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