当前位置: 首页 > 知识库问答 >
问题:

在AWS android改型上上传文件时出错

裴浩歌
2023-03-14

当我调用API时,我得到了一个AWS S3存储桶URL在s3 URL上,我试图通过改造上传文件,但我得到了以下错误

<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>AKIA6F7T6E47MWT7QUOT</AWSAccessKeyId><StringToSign>PUT

multipart/form-data; boundary=754bc465-aad0-41d4-8ac2-2f333ec2c011
1642929217
/plnms-devappmedia/payment-receipt/252ec59e-0947-42e9-9d11-dd8f7eca0902.jpg</StringToSign><SignatureProvided>mcUVkLkJCtrlG5E0X+9uG3Yh5QA=</SignatureProvided><StringToSignBytes>50 55 54 0a 0a 6d 75 6c 74 69 70 61 72 74 2f 66 6f 72 6d 2d 64 61 74 61 3b 20 62 6f 75 6e 64 61 72 79 3d 37 35 34 62 63 34 36 35 2d 61 61 64 30 2d 34 31 64 34 2d 38 61 63 32 2d 32 66 33 33 33 65 63 32 63 30 31 31 0a 31 36 34 32 39 32 39 32 31 37 0a 2f 70 6c 6e 6d 73 2d 64 65 76 61 70 70 6d 65 64 69 61 2f 70 61 79 6d 65 6e 74 2d 72 65 63 65 69 70 74 2f 32 35 32 65 63 35 39 65 2d 30 39 34 37 2d 34 32 65 39 2d 39 64 31 31 2d 64 64 38 66 37 65 63 61 30 39 30 32 2e 6a 70 67</StringToSignBytes><RequestId>356AM1RVYQJRDBHM</RequestId><HostId>cMj3x6+X2Er0lSFHqDSaWCbKOXNw8qlNVqst7RIMllSyUr9bvkKn305dJRTqd31shmTmbLa972A=</HostId></Error>

我正在通过PUT方法进行多部分上传。在postman上,它可以工作,但不能从Android

val requestFile: RequestBody = file.name.toRequestBody("image/jpeg".toMediaTypeOrNull())
        val body: MultipartBody.Part = MultipartBody.Part.createFormData("image", file.name, requestFile)
        val res= executeApiCall {  octaveUserApi.uploadFile(uploadUrl,body)}

相关改造

 @Multipart
@PUT
suspend fun uploadFile(
    @Url url:String,
    @Part filepart: MultipartBody.Part
): Response<String>

共有1个答案

郁烨
2023-03-14

这是一个二进制上传,我是通过多部分进行的,这是失败的

改装呼叫

@PUT
suspend fun uploadFile(
    @Url url:String,
    @Body filebody: RequestBody
): Response<RequestBody>

请求主体将是

Api.uploadFile(uploadUrl,file.asRequestBody("image/jpeg".toMediaTypeOrNull()))
 类似资料:
  • 我正在尝试使用下面描述的无服务器架构在Amazon s3存储桶中上传文件 API网关- 我正在使用postman发送请求,图像被编码为base64格式,并在键“base64”中传递,然后将其转换为inputstream,并传入

  • 当以字符串形式发送文件时,如何显示上载进度?我了解了关于这个问题的所有可用帖子,但都使用了带有文件的多部分帖子。但我没有这个文件。我有一根非常非常大的绳子。请帮帮我,谢谢。 我添加了拦截器: 此自定义请求主体: 改装服务: 和上传方法: 但进展只有一次100%发射

  • 我想上传视频文件使用php和html表单,php代码和错误如下。 除了视频(.mp4、.flv、.avi)外,我可以上传几乎任何其他类型的文件(图像、zip、文本等)。 savevideo.php: 错误: 我使用了相同的代码(带有图像属性)进行图像上传,并且工作得很好。但是当上传视频时,这给了我很多错误,有些被纠正了。现在我无法将表单中的post数据输入到savevideo.php(我检查了第7

  • 我有一个像下面的邮递员的形象。我如何在改型2中做同样的事情? 我这样声明接口:

  • 问题内容: 我正在使用django在python中开发应用程序。用户可以上传CSV文件。我使用文件上传来获取文件。但是,它没有存储在任何地方。我尝试从请求中获取它来处理文件。当我尝试打开文件时,出现错误。我使用python中存在的CSV库进行处理。根据django使用的表单元素和属性。我尝试获取上传文件的请求对象也是django设计的对象。 下面的这一行给出了错误。 给定的错误是: 如果您对此有任

  • 我想将文件从一台服务器上传到另一台FTP服务器,以下是我的上传文件代码,但它抛出错误为: 远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。 这是我的代码: 你能告诉我哪里出了问题吗?