前回はJavaScriptのライブラリ NSFW JSをつかってユーザーがアップロードした不適切な画像を検出しました。今回は実際にアップロードされた画像を削除する処理を考えます。

クライアントサイドで不適切な画像がどうかを判断する場合、どうやって不適切と判断した画像を削除するのかという問題が残ります。クライアントサイドから削除する処理は可能ではありますが、悪意あるユーザーによる不正操作も可能です。

そこで画像の判定と削除の処理はサーバーサイドでおこなうことにします。

npmで以下をインストールします($の入力は不要)。

そして以下を書きます。urlが渡されたら結果をページに出力して読み取ろうという作戦です。

index.js

アプリを起動したら適当なディレクトリ(例として https://lets-csharp.com/samples/2307/nsfwjs/ )に以下をアップロードします。

.htaccess

これで https://lets-csharp.com/samples/2307/nsfwjs/?{画像のurl}でアクセスすると分析結果が表示されます。

次にJavaScript ユーザーが画像をアップロードできる15パズルをつくるに掲載されているupload.phpを以下のように変更します。

upload.php

アップロードされた画像ファイルを評価してneutralの値が小さい場合やporn、sexy、hentaiの値が大きい場合は不適切な画像であるかもしれないと判断して実際にファイルを削除します。そうではない場合は残します。