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는 업로드 파일을 특별히 처리해야 하지 않으면 도와줬어요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Laravel】 CSV 파일 업로드의 검증이 통과되지 않은 원인화면에서 CSV아일의 업로드를 하는 기능을 만들게 되어, 아무것도 없는 채로 구현했으므로, 조금 실행해 볼까와 동작 확인한 바, 밸리데이션이 통과하지 않는다. 가볍게 빠져서 해결까지의 흐름을 적어 둡니다. 이번에는별...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.