django 파일 다운로드

지정된 파일에 대해 공개적으로 액세스할 수 있는 URL을 생성하려고 시도합니다. URL을 생성할 수 없는 경우 없음을 반환합니다. 동일한 함수를 템플릿 필터로 사용할 수 있습니다. django 파일 전송에서 지원되는 세 가지 백 엔드 유형은 업로드용, serve_file()를 통한 다운로드용, 공개 다운로드용 의 백엔드 유형입니다. settings.py 백엔드를 지정할 수 있습니다: FileField의 upload_to 매개 변수는 파일 업로드에 대한 대상 폴더를 정의합니다(여기서는 날짜를 추가합니다). 멋진! 그래서 당신은 그것을 가지고 : 단일 모델과 지퍼 파일을 제공하기 위해 볼 수있는 작은 장고 응용 🙂 우리는 또한 단순히 file.url로 리디렉션 백 엔드를 제공합니다. 하지만 file.url이 실제로 개인 다운로드 URL을 생성하는지 확인해야 합니다. 이 백 엔드는 장고 스토리지 프로젝트의 Amazon S3 및 유사한 스토리지 백엔드와 함께 작동합니다. settings.py 다음을 추가하기만 하면 중요: 공개적으로 액세스할 수 있어야 하는 파일에만 public_download_url 사용하십시오. 그렇지 않으면 다운로드를 승인하기 전에 권한을 확인할 수 있도록 serve_file()만 사용해야 합니다.

브라우저에 파일을 제공합니다. 이는 다운을 승인하기 전에 사용 권한을 확인하는 데 사용되거나 백 엔드가 공개적으로 액세스할 수 있는 URL을 지원하지 않는 경우 대체로 사용됩니다. 따라서 항상 이 함수를 사용하는 뷰를 제공해야 합니다. 브라우저에 응답을 다운로드 가능한 파일로 처리하라고 지시합니다. 콘텐츠 유형 헤더도 포함되어 있다는 것을 알게 된 적습니까? 이것은 우리가 브라우저또는 다른 말로 그 마임 유형에 보내는 파일의 종류를 알려줍니다. 헤더가 설정되지 않은 경우 장고는 텍스트 / HTML로 설정합니다. mimetypes.guess_type 파일의 마임 유형을 추측하려고하는 편리한 기능이지만 파일의 mime 유형을 미리 알고 있다면 수동으로 설정하는 것이 좋습니다. 다음으로 이 HTML 페이지를 렌딩하고 Django를 사용하여 다운로드 작업을 수행하는 보기 함수를 만듭니다. views.py 파일에서 아래 코드를 작성 지금 다운로드 끝점을 방문: http://localhost:8000/download -> zipfile 자동으로 바탕 화면에 다운로드해야: pip 설치 장고 파일 다운로드 복사 PIP 지침 이 템플릿 필터는 filetransfers.api 모듈의 public_upload_url() 기능과 동일합니다: 그것은 주어진 파일에 대한 공개적으로 액세스 할 수있는 URL을 반환하거나 없음 이러한 URL이 존재하지 않는 경우. 플랫폼에 대한 파일을 다운로드합니다. 선택할 수 있는 것이 확실하지 않은 경우 패키지 설치에 대해 자세히 알아보세요.

설치 후 비디오 다운로드 가능성을 확인하십시오. 장고에서, 우리는 다운로드 URL 링크를 제공하기 위해 입력 태그가 필요합니다. 이 작업을 실행하려면 먼저 템플릿 폴더에서 양식 작성을 위한 HTML 파일을 만듭니다. 설치 setup.py « 파일 전송 » 폴더를 복사하거나 프로젝트에 연결하여 패키지를 설치할 수 있습니다(App Engine 개발자는 복사/링크 방법을 사용해야 합니다). 그런 다음 INSTALLED_APPS « 파일 전송 »을 추가합니다. 업로드 후 리디렉션을 보내는 것이 중요합니다. 그렇지 않으면 일부 파일 호스팅 서비스가 제대로 작동하지 않습니다. 이제 DB에 저장된 모든 코드 조각이 있는 zipfile을 만들어 보겠습니다. 우리는 우리가 이전에 밖으로 스텁 다운로드보기에서이 작업을 수행 : 장고 파일 전송을 사용하면 추상적 인 방법으로 업로드 및 다운로드를 처리 재사용 장고 응용 프로그램을 작성할 수 있습니다. Django의 자체 파일 업로드 및 저장소 API만으로는 (1) 파일 다운로드 메커니즘을 제공하지 않으며 (2) 많은 리소스를 먹고 앱 엔진 Blobstore 또는 비동기 Amazon S3 업로드와 같은 클라우드 서비스와 호환되지 않는 직접 업로드만 처리할 수 있기 때문에 너무 제한적입니다(파일이 장고를 통해 파이프되지 않고 S3로 직접 전송되는 경우). 장고 파일 전송이 들어오는 곳입니다. 앱에서 장고의 파일필드 및 모델양식을 계속 사용할 수 있습니다.

파일 처리 보기 및 템플릿에 몇 가지 매우 간단한 API 호출을 추가하고 settings.py 통해 장고 파일 전송 백 엔드를 선택하기만 하면 됩니다. 이를 통해 파일 호스팅 또는 X-Sendfile 메커니즘을 위한 클라우드 서비스를 투명하게 지원할 수 있습니다. 이것은 zipfile을 제공하는 다운로드 끝점이 될 것입니다, 우리는 조금 그 코드를 작성합니다.