1

私のウェブアプリでは、Amazon S3 バケットを使用して画像を保持しています。S3 バケットからの画像をホスト URL とともに表示するには、codeigniter ホストが必要です。

例えば:

mywebapp.com/products/image1.jpg からのコンテンツを表示します mywebapp.s3.amazonaws.com/products/image1.jpg

私は Codeigniter を使用していますが、この問題を自分の codeigniter プロジェクト内で処理するか、他の構成から処理するかはわかりません。

4

1 に答える 1

0

まだ URL ヘルパーをロードしていない場合は、最初にコンストラクターにロードします。

$this->load->helper('url');

リダイレクトが必要なときはいつでも、次のように呼び出すことができます。

$s3_url = "https://mywebapp.s3.amazonaws.com/products/image1.jpg";

// you can omit the last two parameters for the default redirect
redirect($s3_url, 'location', 301);

URLにアクセスして画像を取得するサービスが必要だと思います。これが私の解決策です

<?php if (!defined('BASEPATH')) die();
class Img extends CI_Controller {

    public function __construct ()
    {
        parent::__construct();

        $this->load->helper('url');

        // this is the db model where you store the image's urls
        $this->load->model('images_model', 'img_m');
    }

    // accessed as example.com/img/<image_id>
    // redirects to the appropiate s3 URL
    public function index()
    {
        // get the second segment (returns false if not set)
        $image_id = $this->uri->segment(2);

        // if there was no image in the url set:
        if ($image_id === false)
        {
            // load an image index view
            $this->load->view('image_index_v');
            exit;
        }

        $url = $this->img_m->get_url($image_id);

        // get_url() should return something like this:
        $url = "https://mywebapp.s3.amazonaws.com/products/image1.jpg";

        // then you simply call:
        redirect($url, 'location', 301);
    }
}
于 2013-10-15T17:19:59.830 に答える