茶番
学生の強い味方 heroku
皆さんご存知heroku
は今やPaaSの代表格ですね。
個人的にはrails
で作ったWebアプリを無料で公開できて非常に助かっています。
が、
無料で全ての機能を満足に使えるわけないですよね。
そう、アプリ内からアップロードしたファイルはサーバーの再起動と共に消えてしまいます。
誰もが一度は通る道だと思ってます。
そのため、プロフィール用にユーザーがアップした画像やら、なんやらが数時間後には消えてしまうんです...
ちくしょう!!なんてこった!!!
学生の強い味方 dropbox
話を一度変えましょう、
皆さんご存知dropbox
は今やクラウドストレージの代表格ですね。
個人的には大学の資料共有など非常に助かっています。
ん?
dropbox
から直リンクを生成してheroku
にあげればいいんじゃね...?
heroku
とdropbox
が両方そなわり最強に見える
と、言うわけで本題です。
本記事では**dropbox
にアップロードした画像(ファイル)をheroku
で扱う**方法について説明します。
dropbox
から直リンクを生成する
まず直リンクの生成です。
できるのか?って方も多いかと思いますが、実はできちゃうんです。
dropbox
から欲しいファイルの共有リンクを作成し、
URLのwww.dropbox.com
をdl.dropboxusercontent.com
に変え、?dl=0
を消すだけ。
ね、簡単でしょう?
サンプルコード
そして、この作業をruby
で書くとこうなります。
url = 'https://www.dropbox.com/s/hogehoge/hogehoge12341234.jpg?dl=0'
parts = url.split('/')
if parts.length > 5
parts[2] = 'dl.dropboxusercontent.com'
id = parts[-1].split('?')
g_url = ''
(parts.length - 1).times do |i|
g_url += parts[i] + '/'
end
g_url += id[0]
puts g_url
我ながら汚コードなので改善案があればアドバイスお願い致します...
追記
taram様より提案頂いた上位互換のコードがこちらになります。
url = 'https://www.dropbox.com/s/hogehoge/hogehoge12341234.jpg?dl=0'
puts url.sub(/www.dropbox.com/, "dl.dropboxusercontent.com").sub(/\?dl=0/, "")
stringに置換のメソッドあったんですね、そりゃありますよね勉強不足でした...
ありがとうございました!
heroku
で利用する
直リンクを生成できたので、早速利用していきましょう。
使用方法は簡単です。
例えばユーザーのプロフィール画像として扱いたければ、User
モデルにimage_url:string
のカラムを追加し、共有リンクを貼り付けてもらうだけ!
あとは<img src="<%= @user.image_url %>">
とでも書けば表示されます。
...えぇ、おっしゃりたいことはわかります。
そうですね、あくまで**「無料」で「練習用もしくは身内用」に** Webアプリを作る時くらいでしか有用性はありません。
だってわざわざ外部サイトにアップロードして共有リンク生成して貼り付けなんて面倒ですもん!
終わりに
筆者自身は身内用に作ったWebアプリでこの方法を利用しています。
確かに多少手間はありますが、アップした画像が消えてしまうより何倍も良いですし、特定少数での利用ですので理解して使ってくれていますので不満の声もありません。
身内利用であれば非常に有用なテクニックですので、是非ご活用ください!
※利用規約等に問題はないと思いますが、万が一問題があれば記事を加筆修正し対応致します。