2011-07-13 180 views
3

我有一組靜態文件(通過應用程序上傳)像圖像,視頻等需要提供給認證用戶(即他們的cookie在會話中被註冊爲認證) 。django靜態文件認證

這些文件是分開的,不以任何方式與其他媒體如CSS,javaacript靜態文件等

考慮到我的需要進行身份驗證的靜態文件將是相當大的,我不知道會是什麼服務他們的最有效的方式(順便說一句,我使用的是wsgi)。

def return_large_file(request, p_filename): 
    """                   
    Send a file through Django without loading the whole file into    
    memory at once. The FileWrapper will turn the file object into an   
    iterator for chunks of 8KB.             
    """ 
    if not os.path.exists(p_filename): 
     raise Exception('File %s does not exist!') 

    try: 
     _content_type = mimetypes.guess_type(p_filename) 
    except: 
     _content_type = 'application/octet-stream' 

    wrapper = FileWrapper(file(p_filename)) 
    response = HttpResponse(wrapper, content_type=_content_type) 
    response['Content-Length'] = os.path.getsize(p_filename) 
    return response 

回答

1

我目前使用類似於你在上面使用的功能:

目前我有這個。

我一直在想性能/效率成了一個問題,我會用Apache mod-auth-external來爲給定文件做我的自定義授權。

請注意,我提供這個答案不是基於我的經驗,而是我自己的研究領導我。