载波上传缓存功能如何工作?从我读过的内容来看,它似乎保留了上传的文件,public/uploads/tmp
以避免在重新显示表单时重新上传。我猜缓存会被分配一个唯一的ID,但仍然可以公开访问。如何使敏感上传更安全或完全禁用此功能?
避免这种情况的一种方法是将上传器作为与目标模型分开的模型,这样验证错误就不需要重新上传。
载波上传缓存功能如何工作?从我读过的内容来看,它似乎保留了上传的文件,public/uploads/tmp
以避免在重新显示表单时重新上传。我猜缓存会被分配一个唯一的ID,但仍然可以公开访问。如何使敏感上传更安全或完全禁用此功能?
避免这种情况的一种方法是将上传器作为与目标模型分开的模型,这样验证错误就不需要重新上传。
CarrierWave 将上传的图像保存在缓存目录中,因此您可以轻松地在验证错误的情况下重新提交表单,而无需强制用户重新上传图像。默认的缓存目录是,public/uploads/tmp
但您可以通过设置cache_dir
配置参数来更改它。
通常上传的图片无需认证即可下载。因此,将上传和缓存的文件放在公共目录中是可以的。您还可以更改您的上传器类,使其具有filename
生成唯一随机 ID 的方法,以使其不易被猜到。
顺便说一句,这篇博文描述了如何在云中存储和转换图像并通过 CDN 交付的同时集成 CarrierWave。