![](/img/trans.png)
[英]How can I set the video bytes received from Firebase storage into a video player?
[英]How can I tell if it's an image or video - Firebase Storage/Firestore
我在數組中的 Firestore 上有幾張圖片。 該數組位於 object(房子)中。 該數組包含兩個圖像,它們都在存儲中。 我每次只保存 ULS。 我現在如何檢查它是來自 Firestore 的圖像還是視頻? 上傳時我用的是task 因為我用的是上傳到存儲時的時間,所以我也獲取不到文件名。
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 不知道存儲中的文件類型。 要知道這一點,您有兩種解決方案。 第一個是搜索文件的下載 URL 以查找擴展名,然后相應地處理文件。 或者,不是將 URL 存儲在數據庫中的數組中,而是將它們存儲在 map 中:
$docId (documents)
|
--- urls (map)
|
--- "https://...": "audio"
|
--- "https://...": "video"
其中鍵是實際的 URL,值是文件的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.