2014-11-17 25 views
5

플라스크에서 고정 폴더에없는 이미지를 어떻게 제공합니까?플라스크의 고정 폴더에없는 이미지에 연결하는 방법

현재 사용자가 업로드 한 사진을 플라스크 폴더 밖에있는 디렉토리에 저장합니다 (openshift에있는 이미지는 현재 데이터 폴더에 app-root/data 아래에 저장되어 있으며 플라스크 파일은 app-root/repo/에 있음).

내 템플릿에 이미지 파일을 어떻게 제공합니까?

url_for을 사용하면 플라스크 폴더 밖에있는 이미지 파일을 어떻게 참조합니까?

- data/ 
| 
    -- uploads/ 
- repo/ 
| 
    -- app/ 
    | 
    -- __init__.py 

플라스크 앱 폴더 외부의 데이터 폴더를 볼 수 있습니다. 플라스크 앱 디렉토리에서 data/uploads (한 수준 위로)에 저장된 파일에 대한 링크를 생성하는 방법은 무엇입니까?

+0

프로젝트 구조 (디렉토리 트리)와 이미 시도한 솔루션을 제공해주십시오. – boh

답변

14

당신은 당신이 원하는 않는 send_from_directory 기능을 가지고, 내가 무엇을 할 것이라고하는 것은 다음 미디어 파일이있는 경로와 MEDIA_FOLDER라는 상수를 선언, 당신이해야 할 유일한 것은이다 이 같은 함수를 호출 : 다음

from config import MEDIA_FOLDER 

@app.route('/uploads/<path:filename>') 
def download_file(filename): 
    return send_from_directory(MEDIA_FOLDER, filename, as_attachment=True) 

을, 그것을 호출, 당신은이 작업을 수행 :

{{ url_for('download_file', filename='dogs.jpg') }} 

당신이에 대한 더 많은 정보를 가질 수 있습니다.

+0

감사합니다. 어떤 생각을 어떻게 url_for 사용하여 파일에 대한 링크를 점점 갈 것이라고? –

+0

@sarul 방금 게시물을 편집했지만 기본적으로 {{url_for ('download_file', filename = 'dogs.jpg')}}}해야합니다. –

+0

im은 img 태그의 src 부분에서 url_for를 참조하려고 시도하지만 여전히 작동하지 않는 것 같습니다. 내 질문을 파일 구조로 업데이트했습니다. 메신저 본질적으로 다른 디렉토리에 저장된 플라스크 응용 프로그램에서 데이터/업로드 파일에 대한 파일 경로를 생성하려고합니다 –