1

我正在尝试使用后端服务器生成的签名 url 将文件上传到谷歌云存储,它给出了这个错误

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

4

0 回答 0