haushinka2dx / atmosphere-web

1 stars 2 forks source link

1M以上の画像がアップロードできないことに関して #14

Closed kannokanno closed 10 years ago

kannokanno commented 11 years ago

タイムラインに流すよりはissueの方が適切かな、という気がしたのでこちらに書きます。

課題

Nginxの設定により1Mを超えるファイルはアップロードできない。 これによりアイコン変更では、ユーザーに1M以下のファイルを用意してもらう必要がある。

対策案

サーバー側でリサイズ

検討事項

HTML5のFileAPIとCanvasを使うと、クライアントJSで「アップロード前にリサイズ」することが可能です。

検討事項

で、何が言いたかったといいますと

という一意見です。 理想はクライアント/サーバー両方で対応することなんでしょうけどね。

kannokanno commented 11 years ago

ちなみに「クライアントJSでアップロード前にリサイズ」は、 手元で軽くやってみたところクライアント側のBase64変換までは出来ました。

が、ローカルだと(上記対応関係なく元から)何故かそもそもアイコン変更ができなくて、 そこから先の確認は出来なくて中断しました。

kannokanno commented 11 years ago

理想はクライアント/サーバー両方で対応することなんでしょうけどね。

本文を見直して思いましたが、やっぱりどっちも対応するのがベストか。 (現実解ではなく理想論として)

  1. クライアントJSでリサイズ
  2. ファイルサイズ制限は1M
  3. サーバーでは、アイコン表示サイズにリサイズしてから保存
haushinka2dx commented 11 years ago

現実的に考えて

  1. 両方で対応
  2. サーバーだけでも対応
  3. 仕様としてサイズ超えてる場合はエラー

って感じでしょうか。 サーバー側の画像変換は自前で実装はしたくないですねえ。ブラウザとかjQuery に依存してなければ使えるから探してみますかね。

現状のAPI(multipart-form)が変わる

ちなみにBASE64になってしまうのであれば /user/change_avator_base64 って感じでサーバー側のAPIを追加してもいいかもしれないです。

が、ローカルだと(上記対応関係なく元から)何故かそもそもアイコン変更ができなくて、 そこから先の確認は出来なくて中断しました。

サーバー側の問題かなと。

パッと思いつくのはこのくらいです。 各パスはソースを見てください(すみません)

kannokanno commented 11 years ago

やっぱ権限周りですよねえ。 モジュール化していないブランチでもダメだったので、 自分も権限周りかなと思います。 リクエストが届いているところまではログで確認できているし。