Instalar problemas com o XSendFile no Ubuntu

6

Eu instalei os cabeçalhos de desenvolvimento do apache:

sudo apt-get install apache2-prefork-dev

Baixou e compilou o módulo conforme descrito aqui: link

Adicionada a seguinte linha ao /etc/apache2/mods-available/xsendfile.load:

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

Adicionado ao meu VirtualHost:

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

Ativou o módulo fazendo:

sudo a2enmod xsendfile

Então reiniciei o Apache. Então esse código ainda me fornece um arquivo vazio com 0 bytes:

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

E não há no log de erros do Apache que pertence ao XSendFile. O que estou fazendo errado?

    
por Dan 20.03.2011 / 15:35

1 resposta

1

Eu tenho meu código para funcionar. A única diferença é:

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
    
por 27.08.2012 / 19:06