我有几个图像在Firestore数组。这个数组在一个对象(房子)中。数组包含两个图像,它们都在存储中。每次我只保存了ULS。我现在如何检查它是来自Firestore的图像还是视频?上传时,我使用任务因为我使用的是上传到存储的时间,所以我也找不到文件名。
Tasks.whenAllSuccess<UploadTask>(tasks).addOnSuccessListener {
val downloadUrls = mutableListOf<String>()
var count = 0
for(i in 0 until tasks.size){
tasks[i].result.metadata!!.reference!!.downloadUrl.addOnSuccessListener {uri->
downloadUrls.add(uri.toString())
count++
if(count == tasks.size)
{
progressDialog.dismiss()
saveInDatabase(downloadUrls)
}
}
}
}
private fun saveInDatabase(downloadUrls: MutableList<String>) {
var time = System.currentTimeMillis().toString()
val userHashMap = HashMap<String,Any>()
if(downloadUrls.isNotEmpty())
{
userHashMap["timestamp"] = time
userHashMap["type"] = mainType
userHashMap["img"] = mainImage
userHashMap["preis"] = 845
userHashMap["listImages"] = downloadUrls
}
if(latt != 0.0 && longt != 0.0)
{
userHashMap["long"] = longt
userHashMap["lat"] = latt
}
if(objektBeschreibung.text.toString().isNotEmpty())
{
userHashMap["beschreibung"] = objektBeschreibung.text.toString()
}
if(objektName.text.toString().isNotEmpty())
{
userHashMap["name"] = objektName.text.toString()
}
db.collection( "USER").document(auth.currentUser!!.uid).collection("Objekte").document(time).set(userHashMap, SetOptions.merge()).addOnSuccessListener {
Toast.makeText(ctx,"Erfolgreich angelegt",Toast.LENGTH_LONG).show()
}
}
正如@DougStevenson在他的评论中已经提到的,Firestore不知道你在Storage中有什么类型的文件。要知道,你有两个解。第一种方法是在文件的下载URL中搜索扩展名,然后相应地处理文件。或者,不将数据库中的url存储在数组中,而是将它们存储在映射中:
$docId (documents)
|
--- urls (map)
|
--- "https://...": "audio"
|
--- "https://...": "video"
其中键是实际的URL,值是文件的类型。