Closed numbcoder closed 8 years ago
还是需要增加 Content-Disposition
的支持才是合理的
可以考虑支持在 uploader
里面设置 Content-Disposition
class AttachmentUploader < CarrierWave::Uploader::Base
def content_disposition
"attachment;filename=#{original_filename}"
end
end
然后上传的时候读取 uploader
中的 content_disposition
或者更通用一点,加一个可以自定义上传 header
的方法,毕竟阿里云支持好几个参数可以设置
https://help.aliyun.com/document_detail/31978.html
经测试没问题! 什么时候发版本?
SDK 建议更新到 > 0.1.8,刚刚修复了一个特殊字符计算签名的 bug
URI.encode(path)
这个 encode
应该要去掉,如果我上传的文件是 中文.pdf
,那么实际上传上去的文件名变成了 %E4%B8%AD%E6%96%87.pdf
,这个名字已经不对了
没有限制的,新安装的时候应该会用 SDK 的最新版本
@numbcoder sdk最新的就是0.1.8,没有更新的版本呀
@huacnlee 现在我的gemfile显示的sdk也是0.1.8.如上所述,如果我上传的文件是 中文.pdf
,那么实际上传上去的文件名变成了 %E4%B8%AD%E6%96%87.pdf
。接着访问时就无法访问了
看说明文档有讲这个事情的处理方式
lehug notifications@github.com于2018年4月11日 周三上午8:53写道:
@numbcoder https://github.com/numbcoder @huacnlee https://github.com/huacnlee 现在我的gemfile显示的sdk也是0.1.8.如上所述,如果我上传的文件是 中文.pdf,那么实际上传上去的文件名变成了 %E4%B8%AD%E6%96 https://maps.google.com/?q=E6%2596&entry=gmail&source=g%87.pdf 。接着访问时就无法访问了
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/huacnlee/carrierwave-aliyun/issues/39#issuecomment-380292206, or mute the thread https://github.com/notifications/unsubscribe-auth/AAAVjjkdMB5KSbNzyq5ZFItX64QBtMzwks5tnVQRgaJpZM4JfwF4 .
@huacnlee 对不起,举例有些不恰当,实际上我处理的是图片类文件,不是pdf文件。看到了关于增对文件设置 Content-Disposition
的设置,但是不明白为何不针对于图片类文件,可否帮忙提供一些资料?
我现在有变相的解决这个问题:
感觉如上的处理方式不够优雅直接,有更好的处理方式吗?
因为
carrierwave-aliyun
不支持设置Content-Disposition
的,但是又想在下载的时候直接使用原文件名。 Carrierwave 默认 会过滤掉非拉丁字符的,按照官方的文档说法是,加上这一句,可以关闭过滤关闭过滤之后,文件名没问题,但是上传会失败,错误信息是:
我调试了一下发现,是
URI.encode(path)
导致的,如果不encode
的话就没问题