有没有办法使用 flutter 重命名 firebase 存储中的文件?
Is there a way to rename file in firebase storage using flutter?
我正在根据时间戳上传文件。现在当用户更新信息时。我必须根据当前时间戳更新文件名。那么,是否可以更新文件名?
注意:我们可以删除旧信息并创建新信息。
但是,我想知道是否有任何编辑选项。
简短的回答是,在将文件上传到 Firebase 存储后没有编辑文件名的选项 API(即使没有使用 Flutter)。
但理论上有一些解决方法:
一个 similar question 的 iOS 实现收到了一个答案,你可以先下载图像,然后从存储中删除它,然后用新的时间戳重新上传它,正如您在问题中指出的那样。
但我将如何实施这种情况是,您始终将 Firebase 的存储模块与 Firestore 结合使用。因此,您 link Firestore 中的图像,只需更新那里对象中的时间戳。举个例子:
{
"image_path": "/images/1595765336.jpg" //The filename contains the original timestamp, when it was uploaded.
"timestamp:" 1595765336 //Now you can update just this value and the reference to the image remains the same.
// And of course you can add additional parameters as you want.
}
第二个选项可能是更好的解决方案,当您不想从用户那里消耗太多数据时,因为您只是更新时间戳而不是整个图像,即使它保持不变。
在另一个回答中提到,文件名不能直接更改。
一个选项是下载文件,将其删除,然后上传一个新名称的新文件。
另一种选择是利用云功能来执行该任务
前两个选项占用大量带宽,如果文件很大或更改频繁,可能会增加成本。
文件名之类的东西可以是动态的,打破文件名和文件本身之间的 link 通常是一个好习惯。
写文件时,我会创建一个通用文件名,然后将面向用户的名称存储在 Firestore 中。所以这就是 Firestore 的样子,图像集合中的每个文档都有一个 documentId,它与存储在存储中的图像名称和 url 引用
相匹配
firestore
images (collection)
image_0 (auto-generated id created with Swift .addDocument or Java .add for example)
name: "Picture of a Leroy"
url: "www....."
timestamp: "20200722"
image_1
name: "Picture of Sally"
url: "www....."
timestamp: "20200725"
如您所见,使用这种结构,您可以轻松更改文档名称,开销或成本极低,而且速度非常快。
我正在根据时间戳上传文件。现在当用户更新信息时。我必须根据当前时间戳更新文件名。那么,是否可以更新文件名?
注意:我们可以删除旧信息并创建新信息。
但是,我想知道是否有任何编辑选项。
简短的回答是,在将文件上传到 Firebase 存储后没有编辑文件名的选项 API(即使没有使用 Flutter)。
但理论上有一些解决方法:
一个 similar question 的 iOS 实现收到了一个答案,你可以先下载图像,然后从存储中删除它,然后用新的时间戳重新上传它,正如您在问题中指出的那样。
但我将如何实施这种情况是,您始终将 Firebase 的存储模块与 Firestore 结合使用。因此,您 link Firestore 中的图像,只需更新那里对象中的时间戳。举个例子:
{
"image_path": "/images/1595765336.jpg" //The filename contains the original timestamp, when it was uploaded.
"timestamp:" 1595765336 //Now you can update just this value and the reference to the image remains the same.
// And of course you can add additional parameters as you want.
}
第二个选项可能是更好的解决方案,当您不想从用户那里消耗太多数据时,因为您只是更新时间戳而不是整个图像,即使它保持不变。
在另一个回答中提到,文件名不能直接更改。
一个选项是下载文件,将其删除,然后上传一个新名称的新文件。
另一种选择是利用云功能来执行该任务
前两个选项占用大量带宽,如果文件很大或更改频繁,可能会增加成本。
文件名之类的东西可以是动态的,打破文件名和文件本身之间的 link 通常是一个好习惯。
写文件时,我会创建一个通用文件名,然后将面向用户的名称存储在 Firestore 中。所以这就是 Firestore 的样子,图像集合中的每个文档都有一个 documentId,它与存储在存储中的图像名称和 url 引用
相匹配firestore
images (collection)
image_0 (auto-generated id created with Swift .addDocument or Java .add for example)
name: "Picture of a Leroy"
url: "www....."
timestamp: "20200722"
image_1
name: "Picture of Sally"
url: "www....."
timestamp: "20200725"
如您所见,使用这种结构,您可以轻松更改文档名称,开销或成本极低,而且速度非常快。