django 업로드 파일 원리 해석

최근에도django의 커다란 파일 업로드에 정신이 혼란스러워 이 방면의 원리를 보고 자신의 마음을 썼다.
우선,django의 기본 FileField 형식을 사용하여 폼을 통해 업로드한다면 업로드를 관리하거나 블록별로 읽는 함수를 쓸 필요가 없다.
이거 짱고야. 다 해줬어.
폼에서 받은 업로드 파일 데이터가 아직 완전히 수신되지 않았을 때 데이터는 어디에 저장됩니까?
1 기본값, 업로드 파일 <2.5M, Django 메모리에 저장
2 큰 파일, 임시 파일에 쓰기
이 파일은 임시 파일 경로에 있습니다. 업로드가 완료되면 View에서 호출됩니다.
_Upload() 메서드는 임시 폴더의 임시 파일을
업로드 파일의 저장 경로에 블록을 나누어 쓰고 블록당 크기는 64K이며, 다 쓴 후에 임시로
파일이 삭제됩니다.
두 번째 주의점:django는 큰 파일을 블록으로 나누어 읽어주고 업로드를 실현했습니다. 따라서 큰 파일 업로드가 존재하더라도 속도가 느리고 괜찮습니다. django가 처리했습니다.
여기까지 알고 나는 여전히 다른 원리 부분을 설명할 것이다.
headImg =request.FILES["headImg"]
request.FILES: 파일이 디스크에 저장되거나 내부에 저장되는 방법
처리 폼의 보기가 Request에 있습니다.FILES에서는 사전인 파일 데이터를 수락합니다.
Request를 통해FILES[file] 키를 사용하여 액세스
uf = UploadFileForm(request.POST,request.FILES)
 
우리는 반드시 Request를 해야 한다는 것을 주의해라.FILES가 양식 작성자에게 전달
이것이 바로 파일 데이터가 어떻게 표와 연결되는지 하는 것이다.
업로드된 파일을 처리하려면 다음과 같이 하십시오.
어려운 점은 Request에서 처리하는 것입니다.FILES에서 얻은 실제 파일입니다.
이 사전의 모든 입력은 UploadedFile 대상입니다. (업로드된 파일의 간단한 포장)
UploadedFile.read(): 업로드된 모든 데이터를 파일에서 읽기
UploadedFile.multiple_chunks (): 업로드한 파일이 충분하면 블록이 필요하면 진짜로 되돌려줍니다.기본값은 2.5M
UploadedFile.chunks (): 생성기, 파일을 되돌려주는 블록
UploadedFile.name: 업로드된 파일의 이름 (접두사 경로 없음)
UploadedFile.size: 비트로 표시된 업로드 파일의 크기
 
따라서 업로드를 처리할 필요가 없습니다.
 
인터넷에서 어떤 사람이 업로드 파일을 이렇게 처리하는 것을 보았다.
def handle_uploaded_file(f):
    destination = open('some/file/name.txt','wb+')
    for chunk in f.chunks(): 
        destination.write(chunk)
    destination.close()

전혀 필요 없어요. 당신이 한django는 업로드 파일을 특별히 처리해야 하지 않으면 도와줬어요.

좋은 웹페이지 즐겨찾기