我在火力基地得到了这个:
private fun uploadToFireBase(imageUri: Uri) {
binding.progressBar.visibility = View.VISIBLE
val fileRef : StorageReference = storageReference.child("${System.currentTimeMillis()}.${getFileExtension(imageUri)}")
fileRef.putFile(imageUri).addOnSuccessListener {
fileRef.downloadUrl.addOnSuccessListener {
binding.progressBar.visibility = View.VISIBLE
val hackathonModel = HackathonModel(binding.HackTitleET.text.toString() , binding.HackUrlET.text.toString() ,
binding.HackLocationET.text.toString(), imageUri.toString()
)
val hackathonModelId : String? = root.push().key
root.child("HackathonsUsers").child(firebaseAuth.currentUser!!.uid).child(hackathonModelId.toString()).setValue(hackathonModel)
root.child("AllHackathons").child(hackathonModelId.toString()).setValue(hackathonModel)
Toast.makeText(this, "Hackathon Uploaded Successfully", Toast.LENGTH_SHORT).show()
val intent = Intent(this , MainActivity::class.java)
startActivity(intent)
finish()
}
}.addOnProgressListener {
binding.progressBar.visibility = View.VISIBLE
}.addOnFailureListener{
binding.progressBar.visibility = View.INVISIBLE
binding.postHackBT.visibility= View.VISIBLE
Toast.makeText(this, "Uploading Failed", Toast.LENGTH_SHORT).show()
}
}
private fun getFileExtension(imageUri: Uri): String? {
val cr : ContentResolver = contentResolver
val mime : MimeTypeMap = MimeTypeMap.getSingleton()
return mime.getExtensionFromMimeType(cr.getType(imageUri))
}
如何修复这个错误,并获得一个链接在正确的形式,而不是在这种形式(content://com.android.providers.media.documents/document/image%3A428613
)?
1条答案
按热度按时间xwbd5t1u1#
您正在使用以下项创建模型:
最后一个参数是
imageUri.toString()
,它是本地Android设备上的映像路径,而不是您让Firebase为您生成的下载URL。要获得后者:
另请参阅Firebase文档,了解如何在上载文件后获取下载URL。