3

このアイデアは現在構想段階にあり、最初は可能かどうか、次にどうすればできるかを考えていました。

Sinatra のアプリに次のアプリ ファイルがあるとします。

#!/usr/bin/env ruby
# encoding: UTF-8

require 'sinatra'

get '/hi' do 
  "Hello World"
end

get '/' do 
  erb :index
end


get '/url_to_img.jpg'
  #parse url
  #process an image
  #stream the image back to the client as nothing have happened
end

画像リクエストが傍受される可能性と、HTTP 応答でラップされた画像ファイルが返される可能性があります。

大変失礼な質問で申し訳ありません。

4

1 に答える 1

3

あなたが説明していることは可能です。Sinatra ルートでバイナリ データを返すだけで、ファイルの MIME タイプが正しいことを確認できます。

イメージ MIME を検出し、サムネイルを作成し、サムネイルをブラウザに返す例を次に示します。

get '/:filename' do |filename|
  redirect 404 unless File.readable?(filename)
  content_type detect_mime_type(filename)
  create_thumbnail filename
end

次のヘルパーを使用しています。

require 'filemagic'
require 'rmagick'

def detect_mime_type(path)
  FileMagic.new(FileMagic::MAGIC_MIME)
  .file(path).gsub(/\n/,"").split(";").first
end

def create_thumbnail(path)
  Magick::Image.read(filename)
  .first.resize_to_fill(680, 500)
end

もちろん、メインの Web サイト ディレクトリからファイルを提供するべきではありません。これは説明のみを目的としています。

于 2013-03-08T23:17:01.547 に答える