이 섹션에서는 사용자가 사진을 업로드하고 브라우저에 사진을 표시하는 것을 구현합니다.
여기서 사용할 외부 모듈은 Felix Geisendörfer가 개발한 node-formidable 모듈입니다. 업로드된 파일 데이터를 구문 분석하기 위한 좋은 추상화를 만듭니다.
이 외부 모듈을 설치하려면 cmd에서 다음 명령을 실행해야 합니다.
본 기사의 사례 이미지 파일은 /tmp 폴더에 저장되어 있습니다.
먼저 문제를 해결해 보겠습니다. 로컬 하드 드라이브에 저장된 파일을 브라우저에서 표시하는 방법은 무엇입니까?
fs 모듈을 사용하여 파일을 서버로 읽어옵니다.
/tmp/test.png 파일의 내용을 브라우저에 표시하도록 직접 하드 코딩된 /showURL에 대한 요청 핸들러를 추가해 보겠습니다. 물론 먼저 이미지를 이 위치에 저장해야 합니다.
저희 팀에서는 requestHandlers.js를 일부 수정할 예정입니다.
코드 복사
서버를 다시 시작한 후 http://localhost:8888/show에 접속하시면 /tmp/test.png에 저장된 이미지를 보실 수 있습니다.
자, 마지막으로 원하는 것은 다음과 같습니다.
/start 양식에 파일 업로드 요소 추가
업로드된 이미지를 /tmp/test.png에 저장하기 위해 node-formidable을 업로드 요청 처리기에 통합합니다
업로드된 이미지를 /uploadURL을 통해 HTML 출력에 삽입합니다.
첫 번째 항목은 간단합니다. HTML 양식에 multipart/form-data 인코딩 유형을 추가하고, 이전 텍스트 영역을 제거하고, 파일 업로드 구성 요소를 추가하고, 제출 버튼 사본을 "파일 업로드"로 변경하세요. 아래 requestHandler.js에 표시된 대로:
이제 업로드 요청 핸들러에서 요청 객체를 사용할 수 있습니다. node-formidable은 업로드된 파일을 로컬 /tmp 디렉토리에 저장하는 작업을 처리하며
해야 할 일은 파일이 /tmp/test.png로 저장되었는지 확인하는 것입니다.
다음으로 아래 requestHandlers.js와 같이 파일 업로드 처리 및 이름 바꾸기 작업을 구성합니다.
이 문제의 원인은 디스크 파티션 때문인 것 같습니다. 이 문제를 해결하려면 formidable의 기본 제로타임 폴더 경로를 변경하여 대상 디렉터리와 동일한 디스크 파티션에 있도록 해야 합니다.
requestHandlers.js의 업로드 기능을 찾아 몇 가지 수정합니다.
코드 복사