fastapi에서 UploadFile을 이용하여 파일을 올리고 제한 검사를 서버단에서 하는 방법을 알아보겠습니다. 먼저 로컬에 파일을 올릴 것이므로 app.mount로 미디어 경로도 같이 설정해 줍니다. 참고로 요래 설정하면, 루트 프로젝트에 media 디렉토리가 있어야 동작합니다. 다음에 upload_file 함수입니다. file의 size 체크를 해서 2메가가 넘어가는 파일은 거부합니다. 그러기 위해, await file.read()를 호출한 다음에, content의 길이가 2메가가 넘는 경우 거부를 합니다. 그렇지 않으면, path 위치에 content를 씁니다. 다음에, get_user 함수입니다. 함수 이름이 이상한 거 같은 건 넘어갑시다. /upload를 부르면 2메가 이하인 파일을 업로드 하..
파일 검색 결과
파일 입출력을 다뤄봅시다. 사실, 예외나, 인터페이스를 하지도 않았는데 뜬금없이 이것을 다루는 이유는, 네. 맞습니다. 같이 다루기 위해서입니다. 여기에서는 파일을 읽는 것에 대해서만 중점적으로 다루고, 중간 중간에 예외나, 인터페이스에 대해 다루겠습니다. 그리고, 인코딩 디코딩도 중요하기 때문에 다시 한 번 짚고 넘어가겠습니다. 먼저, 1.txt에 저장된 내용을 보겠습니다. Hello Java, ... 이런 내용들이 들어 있습니다. 이 파일을 읽어서 콘솔에 그대로 출력하고자 합니다. 물론, src 아래에 1.txt가 있습니다. 파일 객체를 하나 생성합니다. src\\1.txt는 윈도우에서, 프로젝트의 루트로부터의 경로 /src/1.txt를 의미합니다. 파일객체 하나를 얻어옵니다. 그리고, try res..
오랫만에 글을 씁니다. 이번 시간에는 파일 포인터를 넘겨주면 파일 디스크립터를 돌려주는 fileno 함수를 배워보겠습니다. 사실 빠른 입출력을 위해 많이 쓴다는 fastio의 write를 배우기 위해서, 배운다는 건 비밀이지만요. 이 함수의 원형은 다음과 같습니다. stdio.h에 선언이 되어 있는 함수입니다. FILE 포인터를 넘겨주면, 그것과 연관된 파일 디스크립터를 돌려주는 역할을 합니다. stdio.h에 보시면 bits/types/FILE.h가 보이는데요. 무엇인지 모르겠지만, 저기에 무언가가 있을 듯 싶으니, 타고 들어가 보겠습니다. 그러면, _IO_FILE이라는 것을 FILE로 재정의를 한 무언가가 보이는데요. 글쎄요. 일단, 이것도 타고 들어가 보겠습니다. 그러면 _IO_FILE 구조체가 보..
최근댓글