20190412/171534680646.pdf
ファイルが/srv/upload/rcb/
次の場所にあると仮定して、ブラウザを使用してサーバーにアップロードされた PDF ファイルにアクセスします。
ここで、次のように/sfile
アクセス アドレスを実装して、実際のアドレス/srv/upload/rcb/
で PDF ファイルをシミュレートします。
- 構成は
nginx サーバーで次のように構成されます。
set $original_root "/srv/upload/rcb/"; # pdf上传后存放路径
location /sfile {
internal; # 重点
alias $original_root;
}
- Internal は Nginx の内部コマンドを指します。つまり、内部リクエストのみが使用でき、外部リクエストは 404 を返します。
- Pythonコード
@restapi.bp.route('/sfile/<name:[A-Za-z0-9/._]+>', methods=["GET"])
async def sfile(request, name):
r = json({"status": 0})
r.headers['Content-Type'] = 'application/pdf' # 文件类型
r.headers['X-Accel-Redirect'] = f'/sfile/{name}' #重定向
return r
- 写真/ビデオ/PDF などのファイルにアクセスする場合、headers['Content-Type'] でファイル タイプを指定する必要があります。指定しない場合、デフォルトのタイプは次のとおりです。
application/json
- headers['X-Accel-Redirect'] は内部リクエストをサーバーに送信し、Nginx はリンクを実際のアドレスに転送します。
リクエストアドレス: http://localhost:8080/XXX/sfile/20190412/171534680646.pdf
アクセスできない場合は、合計が適切かどうかを確認してinternal
くださいContent-Type
。