aliyun-beta / aliyun-oss-ruby-sdk

Ruby SDK for Aliyun Open Simple Storage
Apache License 2.0
17 stars 3 forks source link

上传文件名含有特殊字符会报错 #9

Closed numbcoder closed 8 years ago

numbcoder commented 8 years ago
client.bucket_objects.create("aa%25中文.pdf", file, { 'Content-Type' => "application/pdf" })
client.bucket_objects.create("aa#中文.pdf", file, { 'Content-Type' => "application/pdf" })

都会报错

Aliyun::Oss::RequestError: The request signature we calculated does not match the signature you provided. Check your key and signing method.

应该是有特殊字符时,计算签名的方法有问题

https://github.com/huacnlee/carrierwave-aliyun/issues/39

zlx commented 8 years ago

使用最新版是否还有问题:https://github.com/aliyun-beta/aliyun-oss-ruby-sdk/issues/2

numbcoder commented 8 years ago

包含中文是没问题的,包含 # % 这种字符就有问题

zlx commented 8 years ago

Fix: https://github.com/aliyun-beta/aliyun-oss-ruby-sdk/commit/f7e24de93552a3b2fa15d4c5f3b2c5cea591ed0e

numbcoder commented 8 years ago
key.gsub!(/[#%]/, '')

你这样不行吧,你这就想当于改了我指定的文件名啊,我用别的阿里云客户端上传文件名中含有 # % 字符的文件都是没问题的,我猜测你是计算签名的方法出了问题。

zlx commented 8 years ago

阿里云在签名的时候表现很奇怪,aa%25中文.pdf => aa25中文.pdf , aa#中文.pdf => aa中文.pdf 但是这部分内容是没有相关文档的,我无法获知它的处理方式。你说的阿里云客户端是指?

numbcoder commented 8 years ago

我用的是阿里云OSS Mac 客户端

zlx commented 8 years ago

release v0.1.8

numbcoder commented 8 years ago

👍

Lupeipei commented 6 years ago

client.bucket_objects.create('image.png', file, { 'Content-Type' => 'image/png' }) 上传文件一直报错: xxxx/aliyun/oss/authorization.rb:107:in `digest': no implicit conversion of nil into String (TypeError) 一直没找到原因,新建文件目录也会报一样的错: client.bucket_objects.create("images/", "") 版本ruby 2.3.1p112 求解

Lupeipei commented 6 years ago

我知道哪里出错了,已解决

windy2006 commented 3 years ago

我知道哪里出错了,已解决

您好,我也遇到这个问题了,请问该如何解决,感谢指点!