web-dev-qa-db-ja.com

UbuntuにXSendFileの問題をインストールする

Apachedevヘッダーをインストールしました。

Sudo apt-get install Apache2-prefork-dev

ここに概説されているようにモジュールをダウンロードしてコンパイルしました: http://tn123.ath.cx/mod_xsendfile/

/etc/Apache2/mods-available/xsendfile.loadに次の行を追加しました。

LoadModule xsendfile_module /usr/lib/Apache2/modules/mod_xsendfile.so

これを私のVirtualHostに追加しました:

<VirtualHost *:80>
    XSendFile on
    XSendFilePath /path/to/protected/files/

次の手順でモジュールを有効にしました。

Sudo a2enmod xsendfile

次に、Apacheを再起動しました。それでも、このコードは0バイトの空のファイルを提供します。

file_path = '/path/to/protected/files/some_file.Zip'
file_name = 'some_file.Zip'
response = HttpResponse('', mimetype='application/Zip')
response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
response['X-Sendfile'] = smart_str(file_path)
return response

また、XSendFileに関連するApacheエラーログにはありません。私は何が間違っているのですか?

6
Dan

コードを機能させました。唯一の違いは次のとおりです。

def serve_file(request, file):
    response = HttpResponse(mimetype='application/force-download')
    response['Content-Disposition'] = 'attachment; filename="%s"' % smart_str(os.path.basename(_(file.file.name)))
    response['X-Sendfile'] = smart_str(_(file.file.path))
    # It's usually a good idea to set the 'Content-Length' header too.
    # You can also set any other required headers: Cache-Control, etc.
    return response
1
daigorocub