微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android 无法使用签名 url 将文件上传到 Google Cloud 存储

如何解决Android 无法使用签名 url 将文件上传到 Google Cloud 存储

我正在尝试使用后端服务器生成的签名 URL 将文件上传到 Google Cloud Storage,但出现此错误

SignatureDoesNotMatch我们计算的请求签名与您提供的签名不匹配。检查您的 Google 密钥和签名方法。PUT
multipart/form-data; boundary=50b17d2b-3095-4762-b93f-fa87bbe1c7bd
1926666331
/bucket_name/r1m767lcbtxnuu34hu9klrljf65q</StringToSign></Error>

我正在使用带有 multipart 的 okhttp put 请求来上传这样的文件

private fun directUpload(signedUrl: String,file: File) {
    try {
        val requestBody: RequestBody = RequestBody.create(
            file.getMimeType().toMediaTypeOrNull(),file
        )
        val request: Request = Request.Builder().url(signedUrl).put(requestBody)
            .build()
        val client = OkHttpClient()
        val response: Response = client.newCall(request).execute()
        if (response.isSuccessful) {
            response.toString()
            Log.d("Response_Direct_Upload","FileUploaded")
        } else {
            Log.d("Response_Direct_Upload",response.body?.string().toString())
        }
    } catch (ex: Exception) {
        Log.d("Response_Direct_Upload","FileUploadFailedException")
    }
}

服务端生成的签名url是这样的

https://storage.googleapis.com/bucket_name/r1m767lcbtxnuu34hu9klrljf65q?GoogleAccessId=***************************&Expires=1926666331&Signature=yZmRFP%2BrvtsSy8AX%2F1eug2GN0wn%2BcrZVdHpICV5e%2F6ww0ioNusnEvk8G1u9oGmm3tE0XFr5rpiZ2q3hZ0%2BWx7dcOJlX95arXl1tiqV3p7ZO5qhRr1ZE3JkU1reNZF1yrQQVJiTgBy5mQTtXbWolAKbeo3JITY6ah3AMy%2FbpuGMpwr3vaNUM8HcbqOjPC%2FeWUrqGK3G57SKhz35OX6FK4SEAGNVauM7568L%2FT9h8DJLLr5QiyUgHXqNQjlBFuedI9CXaPthB3A086aDETNWhwtAS1h5vSGFTEy36thv6subXJZwC2vRNUfSEZxGA9hv0upwovJOVLsetipeIhBiXNJQ%3D%3D

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。