[Herokuアドオン]Transloaditアドオンを使ってPHPでファイルアップロード

動画をアップロード + エンコードしてくれるというTransloaditのherokuアドオンを使ってみた。

herokuへのインストール

無料プランがあるので、とりあえずそれで。

$ heroku addons:add transloadit:sandbox

無料プランの場合は、Encoding Volumeが1GB、の制限がある。

transloaditの料金体系は少しややこしくなっているようで、
無料のsandboxプランだと、トータルで1GBになっているよう。

Transloadit | Add-ons | Heroku
heroku料金

公式ページのプランでも値段は一緒。

Pricing & Signup | Transloadit
公式料金

この1GBとうのは何が含まれるかというと、公式で説明があった。
エンコードした場合、する前とした後と両方のサイズが合算されてカウントされるよう。

例えば、0.8MBの画像ファイルをエンコードして0.2MBしたとすれば、それで1MBを使用した事になる。
で、これを1024回繰り返すと、1GBになるので無料枠は終了。

ファイルの閲覧自体には加算されないよう。

PHP SDKのインストール

公式どおり、Composerでインストールする。

1
2
3
4
5
{
  "require": {
    "transloadit/php-sdk": "dev-master"
  }
}

ローカルでcomposer installしておく。
この際、php5.6以上でないとインストール出来ないので注意。
(自分の環境ではphp5.4だったので、アップデートした)

ファイルのアップロード

公式に載っていたママだけど、
アクセスするとheroku上の同じディレクトリに置いたファイルをアップロードするだけ、のサンプルを実行してみる。

PHP全コード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
require '../vendor/autoload.php';

use transloadit\Transloadit;
$transloadit = new Transloadit(array(
    'key' => getenv('TRANSLOADIT_AUTH_KEY'),
    'secret' => getenv('TRANSLOADIT_SECRET_KEY')
));



$response = $transloadit->createAssembly(array(
    'files' => array(dirname(__FILE__).'/160x160.png'),
    'params' => array(
        'steps' => array(
            'resize' => array(
                'robot' => '/image/resize',
                'width' => 100,
                'height' => 100,
            )
        )
    ),
));

// Show the results of the assembly we spawned
echo '<pre>';
print_r($response);
echo '</pre>';

レスポンス

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
transloadit\TransloaditResponse Object
(
    [data] => Array
        (
            [ok] => ASSEMBLY_EXECUTING
            [message] => The assembly is currently being executed.
            [assembly_id] => id
            [parent_id] => 
            [account_id] => id
            [template_id] => 
            [instance] => xxx.transloadit.com
            [assembly_url] => http://api2.karima.transloadit.com/assemblies/xxx
            [assembly_ssl_url] => https://karima.transloadit.com/assemblies/xxx
            [bytes_received] => 1107
            [bytes_expected] => 1107
            [upload_duration] => 1.477
            [client_agent] => Transloadit PHP SDK v2.0.0
            [client_ip] => 10.166.13.48
            [client_referer] => 
            [start_date] => 2015/04/16 01:29:02 GMT
            [is_infinite] => 
            [has_dupe_jobs] => 
            [execution_start] => 2015/04/16 01:29:03 GMT
            [execution_duration] => 0.002
            [notify_start] => 
            [notify_url] => 
            [notify_status] => 
            [notify_response_code] => 
            [notify_duration] => 
            [last_job_completed] => 
            [fields] => Array
                (
                )

            [running_jobs] => Array
                (
                )

            [bytes_usage] => 0
            [executing_jobs] => Array
                (
                    [0] => resize
                )

            [started_jobs] => Array
                (
                    [0] => resize:::original
                )

            [parent_assembly_status] => 
            [params] => {"steps":{"resize":{"robot":"/image/resize","width":100,"height":100}},"auth":{"key":"****","expires":"2015/04/16 03:29:01+00:00"}}
            [template] => 
            [uploads] => Array
                (
                    [0] => Array
                        (
                            [id] => xxx
                            [name] => 160x160.png
                            [basename] => 160x160
                            [ext] => png
                            [size] => 494
                            [mime] => image/png
                            [type] => image
                            [field] => file_1
                            [md5hash] => xxx
                            [original_id] => xxx
                            [original_basename] => 160x160
                            [original_md5hash] => xxx
                            [url] => http://tmp.transloadit.com.s3.amazonaws.com/xxx.png
                            [ssl_url] => https://s3.amazonaws.com/tmp.transloadit.com/xxx.png
                            [meta] => Array
                                (
                                    [width] => 160
                                    [height] => 160
                                    [date_recorded] => 
                                    [date_file_created] => 
                                    [date_file_modified] => 2015/04/16 01:29:02 GMT
                                    [title] => 
                                    [description] => 
                                    [location] => 
                                    [aspect_ratio] => 1
                                    [city] => 
                                    [state] => 
                                    [country] => 
                                    [country_code] => 
                                    [keywords] => 
                                    [aperture] => 
                                    [exposure_compensation] => 
                                    [exposure_mode] => 
                                    [exposure_time] => 
                                    [flash] => 
                                    [focal_length] => 
                                    [f_number] => 
                                    [iso] => 
                                    [light_value] => 
                                    [metering_mode] => 
                                    [shutter_speed] => 
                                    [white_balance] => 
                                    [device_name] => 
                                    [device_vendor] => 
                                    [device_software] => 
                                    [latitude] => 
                                    [longitude] => 
                                    [orientation] => 
                                    [has_clipping_path] => 
                                    [creator] => 
                                    [author] => 
                                    [copyright] => 
                                    [copyright_notice] => 
                                    [frame_count] => 1
                                    [colorspace] => Gray
                                    [average_color] => #686868
                                )

                        )

                )

            [results] => Array
                (
                )

        )

    [curlInfo] => Array
        (
            [url] => https://karima.transloadit.com/assemblies
            [content_type] => application/json; charset=utf-8
            [http_code] => 200
            [header_size] => 371
            [request_size] => 220
            [filetime] => -1
            [ssl_verify_result] => 0
            [redirect_count] => 0
            [total_time] => 1.91859
            [namelookup_time] => 0.012709
            [connect_time] => 0.421413
            [pretransfer_time] => 0.435759
            [size_upload] => 1107
            [size_download] => 2527
            [speed_download] => 1317
            [speed_upload] => 576
            [download_content_length] => -1
            [upload_content_length] => 1107
            [starttransfer_time] => 0.43577
            [redirect_time] => 0
            [redirect_url] => 
            [primary_ip] => 10.234.41.26
            [certinfo] => Array
                (
                )

            [primary_port] => 443
            [local_ip] => 172.18.203.90
            [local_port] => 41591
        )

    [curlErrorNumber] => 0
    [curlErrorMessage] => 
)

画像のURLはレスポンスの、data > uploads > url(ssl_url)に入っている。

結果

herokuのアドオンからTransloadit上で確認すると以下のようにファイルがアップロードされていた。
結果

ファイル名をクリックする事で詳細を確認出来る。
ファイルの確認やダウンロードもここから可能。
詳細

アップロードされたファイルは上記からダウンロード可能だが、この保存ファイルは一時的なもののよう。
24時間後には消える。らしい。

Please keep in mind that we store files only for 24 hours after they were created. To persist your files, please use one of our file export robots.

なので、file export robotsを使用してどこかしらにエクスポートしてやる必要がある。
エクスポート先として用意されているものは以下のよう。

  • Amazon S3
  • SFTP
  • FTP
  • Rackspace
  • YouTube

参考

Transloadit | Add-ons | Heroku
Transloadit | Heroku Dev Center
File upload processing web service | Transloadit
transloadit/php-sdk

   このエントリーをはてなブックマークに追加