【问题标题】:Paperclip: Block original file from being uploaded回形针:阻止上传原始文件
【发布时间】:2017-07-11 13:37:36
【问题描述】:

我有一个视频模型,它目前接受视频网址而不是多部分视频文件。

视频通过应用程序上传到 S3 存储桶。

现在我只想上传风格图像和处理器视频(每帧都附上时间戳值)。

但是原始视频仍然从 url 上传到服务器。我已经将视频上传到 S3,不想通过回形针重复该过程。

任何限制原始视频上传的方式

Video.rb

has_attached_file :video, styles: {
    timestamped: { processors: %i[ timestamper ] },
    small: ['640x', :jpeg],
    medium: ['750x', :jpeg],
    large: ['1242x', :jpeg]
}

【问题讨论】:

    标签: ruby-on-rails video amazon-s3


    【解决方案1】:

    您可以覆盖original 类型并将其用作large。例如:

    has_attached_file :video, styles: {
        timestamped: { processors: %i[ timestamper ] },
        original: ['1242x', :jpeg],
        medium: ['750x', :jpeg],
        small: ['640x', :jpeg]
    }
    

    注意将原件用作其他样式的“基础”。

    另一种解决方案是在该过程之后取消链接文件,但这意味着无论如何都要先上传文件:

    after_save :reprocess_video
    
    private
    
    def reprocess_video
        File.unlink(video.path)
    end
    

    【讨论】:

    • 其实这是主要问题。除了我已经直接上传到 S3 的原始样式之外,我不想要任何其他样式。但是在通过回形针上传网址时,原件(再次)出现了。
    • 所以我回答的第一个解决方案应该适合您的需要。
    • 我尝试了您的第一个解决方案,但它仍在原始文件夹中上传 jpeg 文件。我可以稍后删除它,但这将是一个问题,因为它会增加 S3 的 PUT 操作,并且对于大型应用程序而言成本很高。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    相关资源
    最近更新 更多