node.js 파일 업로드 다운로드

2020年2月6日

Lob 클래스는 양면 스트림으로 구현되므로 컨텍스트에 따라 읽기와 쓰기를 모두 지원합니다. 읽을 수 있는 스트림은 Lob 인스턴스로 파이프되며 파일이 트랜잭션에서 스트리밍을 완료하면 커밋됩니다. .jpg,.txt 및 .exe 파일을 업로드하고 다운로드하려고합니다. 보시다시피 스트리밍 API를 사용하여 파일 업로드 및 다운로드 기능을 구현하는 것은 버퍼 API보다 약간 더 복잡합니다. 대부분의 복잡성은 문제(컨트롤러 대 데이터베이스 논리)의 분리와 연결을 닫아야 하는 시기와 오류를 처리하는 방법을 파악하는 데 기반을 두고 있습니다. 그러나 Node.js 내에서 매우 큰 파일(1GB 이상)으로 작업하고 메모리 사용률을 최적화하려면 이러한 API가 핵심입니다. 이제 Node.js에서 사용자가 컴퓨터에 파일을 업로드할 수 있는 웹 페이지를 만들 준비가 되었습니다: 데이터베이스에서 파일을 다운로드할 때 컨트롤러 논리는 데이터베이스 API에서 Lob 클래스의 인스턴스를 전달합니다. 이 경우 Lob 인스턴스는 읽을 수 있는 스트림이므로 해당 출력을 클라이언트로 데이터를 스트리밍하는 응답 개체에 파이프할 수 있습니다. 사용자 인터페이스를 만듭니다. 나는 또한 / public /style.css 파일 사용자 인터페이스를 개선하기 위해 몇 가지 스타일을 추가합니다 : PDF, Word 문서 와 같은 정적 파일의 경우 구성에서 Express의 정적 함수를 사용합니다 : 데이터베이스에서 파일 콘텐츠를 다시 가져 오는 경우 BLOB 열의 기본 형식은 Lob / 읽을 수있는 스트림이므로 코드를 추가 할 필요가 없습니다.

트릭은 데이터베이스에 대한 연결을 닫기 전에 스트리밍이 완료 될 때까지 기다리는 것입니다. 컨트롤러 논리가 읽을 수 있는 스트림 및 관련 메타데이터를 따라 전달되면 데이터베이스 논리가 파일 내용에서 스트리밍을 시작할 수 있습니다. 시작하려면 빈 Blob이 데이터베이스에 삽입되고 포인터가 out bind로 반환됩니다. 포인터는 노드 oracledb의 Lob 클래스의 인스턴스입니다. 프런트 엔드 스크립트에서, 우리는 우리의 라우터에 FORM의 “대상”매개 변수를 설정합니다. for.eg /업로드 / 사진 및 app.get (`/업로드 / 사진`, …) 우리는 우리의 파일을 처리 할 수 있습니다.