Closed gogo52cn closed 7 years ago
描述不清楚
此外,不要用中文作为文件名,避免出现奇怪的问题。
如果你希望用户下载的时候能获得中文文件名,你应该用 Content-Disposition
功能
https://github.com/huacnlee/carrierwave-aliyun#增对文件设置-content-disposition
恩,好的,我正在改自己的代码用别的ASCII的文件名,然后在数据库里记录原始文件名。
我怀疑阿里改了他们的文件命名方法。。。 您的代码里是这样获得url的:
def initialize(uploader, base, path)
@uploader = uploader
@path = URI.encode(path)
@base = base
end
def url(opts = {})
url = if @uploader.aliyun_private_read
bucket.private_get_url(@path, opts)
else
bucket.path_to_url(@path, opts)
end
puts url
url
end
URI.encode('比赛顺序')为 %E6%AF%94%E8%B5%9B%E9%A1%BA%E5%BA%8F
而阿里现在的文件名是: %25E6%25AF%2594%25E8%25B5%259B%25E9%25A1%25BA%25E5%25BA%258F
我怀疑阿里改了他们命名文件的方法?
anyway, 我会保存一个普通英文数字的文件名避免这个问题。
谢谢华顺。
中文的确有问题, 用uuid了
上传一个文件,model里用 model.file.url和到阿里云管理平台看到的url不一样。。。。
比如上传一个"比赛顺序“
model.file.url为:
***** %E6%AF%94%E8%B5%9B%E9%A1%BA%E5%BA%8F.pdf
而阿里的url是: ***** %25E6%25AF%2594%25E8%25B5%259B%25E9%25A1%25BA%25E5%25BA%258F.pdf