我正在使用kotlin开发一个Android应用程序,将pdf文件上传到firebase存储
我遵循了一个教程,当涉及到运行时,我只能浏览我的文件,但是我无法选择任何要上传的文件是截图screenshot
这是mainActivity.kt的代码
在MainActivity类下:AppCompatActivity()
val pdf: Int=0
lateinit var uri:Uri
lateinit var mStorage: StorageReference
在onCreate()
下 val pdfBtn=findViewById<Button>(R.id.pdfBtn)
mStorage=FirebaseStorage.getInstance().getReference("Uploads")
pdfBtn.setOnClickListener(View.OnClickListener {
view: View-> val intent = Intent()
intent.setType("pdf/*")
intent.setAction(Intent.ACTION_GET_CONTENT)
startActivityForResult(Intent.createChooser(intent,"Select PDF"),pdf)
})
该方法的其余部分与上传
有关 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
val uriTxt=findViewById<TextView>(R.id.uriTxt)
if(resultCode== Activity.RESULT_OK){
if(requestCode==pdf){
uri=data!!.data
uriTxt.text=uri.toString()
upload()
}
}
super.onActivityResult(requestCode, resultCode, data)
}
private fun upload(){
var mRefrence= mStorage.child(uri.lastPathSegment)
try{
mRefrence.putFile(uri).addOnSuccessListener {
taskSnapshot: UploadTask.TaskSnapshot? -> var url =taskSnapshot!!.downloadUrl
val dwnTxt=findViewById<TextView>(R.id.dwnTxt)
dwnTxt.text=url.toString()
Toast.makeText(this,"Successfully uploaded",Toast.LENGTH_LONG).show()
}
}
catch (e: Exception){
Toast.makeText(this,e.toString(),Toast.LENGTH_LONG).show()
}
}
有人可以纠正我的代码并告诉我它有什么问题。 非常感谢你
答案 0 :(得分:0)
如果有人想知道问题是在
类型中intent.setType("pdf/*")
更正是
intent.type="application/pdf"
答案 1 :(得分:0)
我创建了这个实用程序类,以便在协程的帮助下使用kotlin将多个图像上传到Firebase存储。如果您有任何改进,请告诉我。
您需要首先添加这些依赖项。
实现'com.google.firebase:firebase-storage-ktx:19.1.1'
// Firebase通过kotlinx-coroutines-play-services库为Coroutines添加了支持
实现“ org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.3.1”
有关更多信息,请检查link,github link
private suspend fun uploadPhoto(file: File): Uri {
val storageRef = Firebase.storage.reference
val fileName = UUID.randomUUID().toString()
val fileUri = Uri.fromFile(file)
return storageRef.child(fileName)
.putFile(fileUri)
.await()
.storage
.downloadUrl
.await()
.
}
}