huacnlee / carrierwave-aliyun

阿里云 OSS Ruby 上传组件,基于 Carrierwave
https://huacnlee.com/carrierwave-aliyun/
197 stars 93 forks source link

上传文件如果文件名包含中文会产生 Aliyun::OSS::ServerError Code: NoSuchKey 报错 #78

Closed xuxiangyang closed 3 years ago

xuxiangyang commented 3 years ago

carrierwave-aliyun-1.2.0

aliyun-sdk-0.8.0

carrierwave-2.1.0

会在 https://github.com/huacnlee/carrierwave-aliyun/blob/master/lib/carrierwave/aliyun/bucket.rb#L82 报错

huacnlee commented 3 years ago

文件名不要用中文,如果你想下载有原始文件名,用 content_disposition

详见:https://github.com/huacnlee/carrierwave-aliyun#%E5%A2%9E%E5%AF%B9%E6%96%87%E4%BB%B6%E8%AE%BE%E7%BD%AE-content-disposition--customize-the-content-disposition

xuxiangyang commented 3 years ago

可能我表达的不清楚。。。

我用的就是carrierwave上传,用户可以通过form提交文件。大概大概就是类似这种

model

class User < ActiveRecord::Base
  mount_uploader :avatar, AvatarUploader
end

controller

u = User.new
u.avatar = params[:file] 
u.save!

只要用户上传中文名字的文件,save! 时就会报错误。因为是用户上传,我不大能限制他们只上传英文文件~