【问题标题】:Ruby on Rails Cloudinary upload multiple imagesRuby on Rails Cloudinary 上传多张图片
【发布时间】:2019-07-13 05:32:22
【问题描述】:

我目前正在将多个图像作为表单的一部分上传到 Cloudinary。问题是 Cloudinary 上传器一次只允许上传 1 张图片,所以当我上传如下图片时,发布请求非常慢:

params[:photos].each do |_, photo|
  uploaded_photo = Cloudinary::Uploader.upload(photo.tempfile)
  photo = Photo.new(property: @property, public_id: uploaded_photo[:public_id.to_s])
  photo.save
end

图像与属性相关联,因此拥有多个图像非常重要。我曾尝试与 Parallel gem 并行运行上传,但它只是导致我的服务器由于某种未知原因而冻结。

我还考虑过将图像上传到 Cloudinary 的想法,因为它们在表单上被选中,然后在某个未确定的时间间隔清除作业中任何未使用的图像。

你们建议如何将多张图片作为模型的一部分上传到 cloudinary?

【问题讨论】:

    标签: ruby-on-rails cloudinary


    【解决方案1】:

    将多个文件上传到 Cloudinary 的一种方法是创建单独的线程:

    photos = [] # Array of photos to upload
    threads = []
    number_of_threads = 3
    
    chunk_size = photos.size/number_of_threads
    chunks = photos.each_slice(chunk_size).to_a
    chunks.each do |res|
        threads << Thread.new {     
            # Add code here to do the upload to Cloudinary
        }
    end
    threads.each { |thr| thr.join }
    

    您可以先将所有图像上传到 Cloudinary,然后更新您的模型,或者在每个线程结束时更新您的模型。我不明白为什么那里应该有问题。我不建议使用多个线程,因为如果您有许多用户同时上传内容,这可能会消耗您服务器上的大部分资源。或者,Cloudinary 网站确实建议使用他们的 jQuery 插件在他们的 Ruby SDK 文档 (https://cloudinary.com/documentation/rails_image_and_video_upload#additional_jquery_library_features) 下进行多个文件上传。

    【讨论】:

      猜你喜欢
      • 2018-02-05
      • 2014-12-01
      • 2010-12-23
      • 2018-08-01
      • 2013-12-20
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      相关资源
      最近更新 更多