flask 파일 업로드 다운로드

| 0

파일을 선택할 수 있는 단추와 해당 파일을 업로드하는 다른 단추를 제공하는 간단한 HTML 페이지를 만듭니다. HTML 페이지가 index.html이 되도록 하자 그래서 그 secure_filename() 함수는 실제로 무엇을 합니까? 이제 문제는 “절대로 사용자 입력을 신뢰하지 마십시오”라는 원칙이 있다는 것입니다. 업로드된 파일의 파일 이름도 마찬가지입니다. 제출된 모든 양식 데이터는 위조될 수 있으며 파일 이름은 위험할 수 있습니다. 지금은 기억하십시오 : 항상 파일 시스템에 직접 저장하기 전에 해당 함수를 사용하여 파일 이름을 보호하십시오. 이제 마지막으로 한 가지는 누락: 업로드 된 파일의 서빙. upload_file() 사용자를 url_for(`uploaded_file`, 파일 이름=파일 이름)로 리디렉션합니다. 따라서 uploaded_file() 함수를 작성하여 해당 이름의 파일을 반환합니다. Flask 0.5에서 우리는 우리를 위해 그렇게하는 기능을 사용할 수 있습니다 : POST 요청에 첨부 된 업로드 된 파일은 request.files[`file`]에 의해 참조 될 수 있습니다. 이 파일은 이전에 만든 UPLOAD_FOLDER 경로에 저장해야 합니다. 업로드된 파일의 이름을 확인한 후 서버 파일 시스템에 저장합니다. secure_filename 기능을 사용하여 서버 파일 시스템에 파일을 저장하는 데 사용하는 파일 이름을 얻었습니다. 이것은 사용자가 일부 시스템 구성 파일과 충돌하는 파일의 이름을 지정할 수 있기 때문에 수행되며,이 경우 업로드 된 파일 이름이 변경되지 않으면 시스템 파일이 덮어 쓰여집니다.

이 취약점은 해커가 서버를 해킹하는 데 사용할 수 있습니다. 따라서 secure_filename 사용하는 것이 좋습니다. 2단계. 다음으로 스크립트가 필요합니다main.py. 이 스크립트는 파이썬 플라스크 파일 업로드 예제의 완벽한 인스턴스입니다. 파일 업로드 작업을 수행하는 데 필요한 모든 URI를 정의합니다. 업로드할 파일을 선택할 때: main.py 스크립트에서와 같이 지정된 유형의 파일만 선택할 수 있습니다. 또는 build_only 규칙으로 uploaded_file 등록 하 고 SharedData미들웨어를 사용할 수 있습니다. 이것은 이전 버전의 Flask: .의 수를 가정하는 데도 작동합니다. / 정확하고 사용자가 수정하지 말아야 서버의 파일 시스템에 파일을 수정 할 수있는 능력을 가질 수 UPLOAD_FOLDER 이에 참여합니다.