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

Javascript 为什么我尝试将文件从Firebase存储的根目录复制到新文件夹的代码不起作用?,javascript,firebase-storage,Javascript,Firebase Storage,我正在尝试将文件从Firebase存储中的根目录复制或移动到文件夹中。更具体地说,从users/displayName/uid/到users/displayName/uid/somefolder。我了解到Firebase存储API中没有任何方法可以复制您已经上传的文件,您必须下载数据并重新上传。但是,我找不到任何示例代码。因此,我编写了以下代码来尝试实现这一点,但它不起作用。请参阅下面的错误以了解原因 以下是我编写的代码: const listRef = firebase.storage().r

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

以下是我编写的代码:

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)
});
所以,这段代码不起作用,什么也没发生。未创建任何文件夹。下面是出现的错误:

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()
方法获得的项


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

您不能传递引用
put()
。根据,可以传递三种不同的内容:Blob、Uint8array或ArrayBuffer


然而,问题是javascript web客户端SDK没有提供直接下载任何格式数据的方法。您必须自己解决如何实现这一点,可能是通过,或者将这项工作转移到可以使用服务器SDK复制数据的后端。

Hi Doug,admin.storage.object是否会同时捕获多个文件,因为可能会同时上载多个文件?如果没有,那么,如何确保多个上传的每个文件都得到处理。谢谢。如果您有新问题,请单独发布,并解释您正在尝试做的事情。当然,这是: