gpt4 book ai didi

ruby-on-rails - Carrierwave 仅将图像保存为 Production-env 中的 tmp

转载 作者:行者123 更新时间:2023-12-05 07:54:59 25 4
gpt4 key购买 nike

花了一整天的时间试图让它发挥作用。 Carrierwaves 和我的文件上传在开发/本地计算机上工作时工作正常,但是当在我的服务器上尝试使用 ENV:Production 和通过 Capistrano 部署时,文件只保存在 uploads/tmp/而不是我的 image_uploader 中所述。

 def store_dir
"#{Rails.root}/public/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

我在搜索时尝试了一些建议,但没有解决这个问题。

此外,我的表单/帖子不会转发我,但我会停留在我上传的同一页面上,这在开发/本地时不会发生。

这是我认为可以解决问题的 deploy.rb 的一些部分:

set :linked_dirs, fetch(:linked_dirs) + %w{public/uploads}

任务:symlink_uploads 做
运行“ln -nfs #{shared_pa​​th}/uploads #{release_path}/public/uploads”
结束

 after :restart, :seed_roles, :symlink_uploads 

编辑问题:我是否必须将正在从 tmp 上传的图片移动到我希望存储它们的位置?

最佳答案

请执行以下操作

并在设置中

config/initializers/carrierwave.rb

CarrierWave.configure do |config|
config.root = Rails.root
end

https://github.com/carrierwaveuploader/carrierwave/wiki/how-to:-secure-upload

这里你不需要改变store_dir

如果要更改随机十六进制文件名

https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Create-random-and-unique-filenames-for-all-versioned-files

将下面的代码放入你的 uploader

def filename
"#{secure_token(10)}.#{file.extension}" if original_filename.present?
end

protected
def secure_token(length=16)
var = :"@#{mounted_as}_secure_token"
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.hex(length/2))
end

希望能解决问题

关于ruby-on-rails - Carrierwave 仅将图像保存为 Production-env 中的 tmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30530324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com