【问题标题】:Is it possible to upload image to firebase storage using URL instead of SDK in Android?是否可以在 Android 中使用 URL 而不是 SDK 将图像上传到 Firebase 存储?
【发布时间】:2018-08-20 12:23:34
【问题描述】:

我正在尝试使用 url 而不是使用 Retrofit 的 SDK 从 android 应用程序将文件上传到 firebase 存储。这是我上传图片的方法,

fun uploadImageToUrl() {
    val url = "https://firebasestorage.googleapis.com/v0/b/xxxxxxx-xxxx.appspot.com/o/${bean.firebaseUid}/idProofs/${bean.documentTitle}.jpg/"
    var client = OkHttpClient.Builder().build()

    val retrofit = Retrofit.Builder()
            .baseUrl(url).addConverterFactory(GsonConverterFactory.create())
            .client(client)
            .build()

    var service = retrofit.create(UploadService::class.java)

    var params = HashMap<String, RequestBody>()

    var reqFile = RequestBody.create(MediaType.parse("image/*"), photoFile)
    var header = "Bearer ${bean.firebaseToken}"
    var body = MultipartBody.Part.createFormData("image", bean.documentTitle, reqFile)

    var response =  service.uploadDocument(header, body)

    response.enqueue(object: Callback<ResponseBody> {

        override fun onResponse(call: Call<ResponseBody>?, response: Response<ResponseBody>?) {
            Log.e("Upload Response", response!!.message())
        }

        override fun onFailure(call: Call<ResponseBody>?, t: Throwable?) {
            Log.e("Upload Failed", t!!.localizedMessage)
        }

    })
}

这是服务接口中的方法。

interface UploadService {
  @Multipart
  @Headers("Accept: application/json")
  @POST("/?alt=media")
  fun uploadDocument(@Header("Authorization") header: String, @Part image: MultipartBody.Part): retrofit2.Call<ResponseBody>
}

但是什么都没有发生,没有错误消息,onResponse,onFailure 方法没有被调用,图像没有出现。

【问题讨论】:

  • 你能使用 Intercepter 并记录请求和响应吗?

标签: android kotlin retrofit2 image-uploading firebase-storage


【解决方案1】:

我的错。网址应该是这样的

https://firebasestorage.googleapis.com/v0/b/xxxxxxx-xxxx.appspot.com/o/${bean.firebaseUid}%2FidProofs%2F${bean.documentTitle}.jpg/

而不是这个

https://firebasestorage.googleapis.com/v0/b/xxxxxxx-xxxx.appspot.com/o/${bean.firebaseUid}/idProofs/${bean.documentTitle}.jpg/

我不知道为什么,但它正在工作。

【讨论】:

    猜你喜欢
    • 2019-09-11
    • 2023-04-04
    • 2021-09-29
    • 1970-01-01
    • 2021-07-30
    • 2021-11-06
    • 2016-12-09
    • 2015-07-15
    • 1970-01-01
    相关资源
    最近更新 更多