【问题标题】:Direct upload of PDF to S3 and splitting PDF into one jpg per page in background process将 PDF 直接上传到 S3 并在后台进程中将 PDF 拆分为每页一个 jpg
【发布时间】:2012-01-18 05:06:33
【问题描述】:

所以我有一些工作代码可以使用回形针 (here) 将 pdf 上传到 s3。该代码将 PDF 拆分为 jpg/页面,并将它们中的每一个都上传到 s3。

由于 heroku 有 30 秒的超时,因此此代码不适用于 Heroku 的较大文件(我可能只需要最多 10mb 的文件)。

我的印象是简单地将上传放在后台进程(delayed_pa​​perclip gem?)仍然会导致超时,我需要将文件直接上传到 s3。我已经看到我可以使用 gem carrierwave_direct 来做到这一点。

那么现在的问题是如何拥有以下代码:

def make_manual_pages
  if valid?
    Paperclip.run('convert', "-quality #{ManualPage::QUALITY} -density #{ManualPage::DENSITY} #{manual.url} #{manual.url}%d.png")
    images = Dir.glob("#{set_ups.url}*.png").sort_by do |line|
      line.match(/(\d+)\.png$/)[1].to_i
    end

    images.each do |page_image|
      manual_pages.build(:image => File.open(page_image))
    end
    FileUtils.rm images
  end
end

使用carrierwave_direct。

或者也许我处理这个问题是错误的..因为如果我直接将图像上传到 s3,我什至看不到如何对图像进行处理。也许我需要直接上传文件,然后让heroku访问图像并进行处理?任何帮助将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby amazon-s3 paperclip carrierwave


    【解决方案1】:

    carrierwave_direct 的优点和问题是您的文件仅存储在 s3 和 s3 上。 Carrierwave_direct 有一些函数可以处理上传到 s3 的文件,但所有这些函数都首先将文件下载到您的服务器,对其进行处理,然后将其重新上传到 s3,因此所有处理都在您的主机上完成。

    如果您需要像您一样进行一些处理,carrierwave_direct 将无法帮助您。

    一种解决方案是在亚马逊上生成虚拟机来处理您的文件。我不确定 s3 和 ec2 之间的传输是如何计费的,但是,它不会比传输回 heroku 更多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-23
      • 2021-04-02
      • 2012-10-31
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-01
      相关资源
      最近更新 更多