Code
-
Checkout with GitHub CLI
Work fast with our official CLI. Learn more.
- Checkout with GitHub Desktop
サーバのPOSTの上限を超えるPOST時に動画、画像ともに投稿に失敗する問題 #100
Conversation
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more about hiding comments.
いつもありがとうございます。 |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more about hiding comments.
自動で取得したサーバの上限なりユーザーが手作業で設定した最大の送信許可サイズなりなんなりをNEOに渡す処理がないと、巨大なPOSTになってすべて失敗しますので、NEOに限界の値の処理を渡す処理は、必要だと思います…。 これはサーバ側の問題でもありますが、POSTを行うアプリである以上避ける事ができない問題だと思います。 ただ、8MBを超えるような大きなpchファイルを作る人はあまり多くいないので、作画時間が10時間以上の場合に投稿が不可能になるケースがあるというだけとはいえるのですが。 たとえば、8MBが上限でも20MBが上限でも、それはサーバで設定をあげていけば投稿が可能にはなりますが、 pchは、psdのようにレイヤーを結合すれば容量が減るわけではなく、動画は追記していくと増えますから切り捨てる選択肢がなければ、投稿不可能な状態が発生します。 しかし、 サポート掲示板でのやりとりのリンクも参考のため、追記しておきます。 |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more about hiding comments.
これを把握するのに、私もかなり時間がかかりましたので、貼っておきます。 |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more about hiding comments.
neoのCanvasの描画に関する事など、こちらでは対応不能な事についてはIssueを開いて、それ以外の対応可能な修正・改造はこちらでやる事にしました。 |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more about hiding comments.
対応遅くなって申し訳ありません。 あまり返事お待たせするのも申し訳ありませんので、satopianさんをcollaboratorに追加して、mergeの権限追加しておきます。 |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more about hiding comments.
このプルリクエストに関しては、とりあえず(closeして頂いて恐縮なのですが) バージョンはv1.6.1のままです。 |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more about hiding comments.
@funige いろいろとすみません。 |
Update branch attempt failed
Oops, something went wrong.
運営しているサイトで、投稿できるPOSTのデータサイズの上限を20MBに設定していましたが、20MBを超えるpchアニメデータが生成され、画像・動画・拡張ヘッダすべてのPOSTが失敗する問題が発生しました。
その時のサーバの設定は
でした。
ここで、例えば
とすれば、pchファイルが15MBでPOSTの合計が20MB以下の時はpchアニメデータだけ投稿されず、画像の投稿は成功します。
しかし、
post_max_size = 20M
の場合は、
upload_max_filesize
の設定にかかわらず、POSTの合計サイズが20MBを超えた時点でPOSTはサーバに拒絶され失敗してしまいます。
そのため、neo.jsに処理を追加し、ペイント画面にもneoに数値を渡すためのオプションを設定しました。
変数には、post_max_sizeで設定されている値を
このように、
ini_get()
で取得してMB単位でセットしています。さくらのレンタルサーバライトのデフォルト値であれば、 8MBになるため
のように値として8がセットされ、neoに渡されます。
そして、POSTの合計サイズを計算して、サーバ側のPOST可能な上限を超えている時はpchアニメデータファイルを添付せず、画像の投稿を成功させます。
ただ、この時に、レイヤー情報が失われる事をユーザーに知らせる必要があるため
window.confirmで、レイヤー情報なしで投稿する事を説明して、OKが押された時にのみ投稿処理を行います。
これにより、レイヤー情報が失われるとは思わずに、途中保存の上のレイヤーを黒塗りしたり白塗りしたりした画像だけが投稿されるのを防止します。
運営しているサイトではこの処理が必要だったのですが、PaintBBS オリジナルの処理という訳でもないので、マージするかどうかの判断は作者であるFunigeさんの判断になります。(当たり前ですが…)
面倒な話ばかりですみませんが、よろしくご検討ください。