我是亚马逊S3的新用户,在搜索了亚马逊&很多网站我都取得了一些进展。
我正在创建一个窗口从应用程序上传文件。我尝试使用以下代码,但它没有上传文件,也没有任何错误。
如果我评论.withKey属性而不是文件被上传到存储桶的根目录,而是我想上传到文件夹中的特定文件夹。
Try
Dim fileTransferUtility As New TransferUtility(client)
Dim request As TransferUtilityUploadRequest = New TransferUtilityUploadRequest
Dim S3_KEY As String = "MitsTest/CVs" 'I want to upload file to CVs folder
With request
.BucketName = "mybucketname"
.WithKey(S3_KEY)
.WithFilePath("C:\Users\mitesh\Desktop\s3.txt")
.WithTimeout(FIVE_MINUTES)
End With
fileTransferUtility.Upload(request)
Catch ex As Exception
Finally
End Try
我也尝试使用以下和相同的结果,我没有得到任何错误但文件没有上传。
Dim Filepath = "C:\Users\mitesh\Desktop\s3.txt"
Dim FolderName = "MitsTest/CVs/"
Dim PutRequest As New PutObjectRequest()
Try
With PutRequest
.WithBucketName("mybucketname")
'.WithKey(FolderName + "/" + FilePath)
.WithKey(FolderName)
.WithFilePath(FilePath)
.StorageClass = S3StorageClass.Standard
.ServerSideEncryptionMethod = ServerSideEncryptionMethod.None
'.WithContentBody(String.Empty)
Dim response As S3Response = client.PutObject(PutRequest)
response.Dispose()
End With
Catch ex As Exception
Stop
End Try
如果我取消注释该行'.WithKey(FolderName +“/”+ FilePath)并从文件夹名称中删除正斜杠(/),那么我得到“我们计算的请求签名与您提供的签名不匹配。你的密钥和签名方法。“错误。
我在这里错过了什么或做错了什么?任何帮助都会非常感激。
问候
Mitesh
答案 0 :(得分:0)
您收到签名错误的原因是“C:\ users ..”中的反斜杠字符对于键名无效。您应该使用正斜杠替换它们,或者为键名使用不同的值。
在您的第一个示例中,您实际上是尝试上传到“MitsTest / CVs”键。您需要附加文件名,如下所示:
.WithKey(S3_KEY+ "/" + "s3.txt")