Pyramid を使用して GridFS からファイルを提供するための最良かつおそらく最も簡単な方法は何だろうと思っています。nginx をプロキシ サーバー (ssl 用) として使用し、ウェイトレスをアプリケーション サーバーとして使用しています。
提供できるようにする必要があるファイルの種類は次のとおりです: mp3、pdf、jpg、png
ファイルは、次の URL "/files/{userid}/{filename}" からアクセスできる必要があります。
次のようにコードで content-type を明示的に設定したため、現在、ファイルはクライアント側の適切なアプリケーションによって開かれています。
if filename[-3:] == "pdf":
response = Response(content_type='application/pdf')
elif filename[-3:] in ["jpg", "png"]:
response = Response(content_type='image/*')
elif filename[-3:] in ["mp3"]:
response = Response(content_type='audio/mp3')
else:
response = Response(content_type="application/*")
response.app_iter = file #file is a GridFS file object
return response
唯一のことは、mp3 を適切にストリーミングできないことです。audio.jsを使用して再生します。開いて再生しますが、トラックの長さが表示されず、シークできません。「accept-ranges」プロパティと関係があることは知っていますが、正しく設定できないようです。nginxまたはウェイトレスと関係がありますか? それとも、ヘッダーを正しく設定していないだけですか?
ここでreturn FileResponse(file)
指定されているような簡単なものを使用したいのですが、私のファイルはファイルシステムから直接取得されません.これを機能させるプラグアンドプレイの方法はありますか?
アドバイスをいただければ幸いです。
ご助力ありがとうございます!