node.js 파일 업로드 및 다운로드 실현
수요
최근 프로젝트에서 파일 업로드와 다운로드라는 요구가 생겼다.구체적인 상황은 다음과 같다.
A가 작업 파일(파일 형식에 제한이 없음)을 사이트에 업로드하고 B가 본 후에 파일을 다운로드하여 파일의 요구에 따라 작업을 완성한 후에 B는 작업 완성 상황을 하나의 Excel 문서에 모아 사이트에 업로드한다. (이때 xls 형식의 excel 문서만 업로드할 수 있음) 그리고 사이트는 백그라운드에서 이 Excel 문서의 데이터를 처리하여 새로운 Excel 문서를 생성한다.
이 항목은 Node 기반이기 때문입니다.js 개발, 그래서 어떻게 파일의 업로드 다운로드 기능을 실현합니까?
실현
생각
form 양식 페이지 작성
node.js
파일 다운로드
탭
enctype="multipart/form-data"
의 역할은 양식의 MIME 인코딩을 설정하는 것입니다.기본적으로 이 인코딩 형식은 응용 프로그램/x-www-form-urlencoded로 파일 업로드에 사용할 수 없습니다.multipart/form-data를 사용해야만 파일 데이터를 완전하게 전달할 수 있습니다. enctype="multipart/form-data"
는 2진 데이터를 업로드하는 것으로form에 있는 input의 값이 2진법으로 전달되기 때문에request는 값을 얻지 못합니다.따라서 우리는 node를 도입해야 한다.js의 외부 모듈:formidable, 폼 데이터를 분석합니다.
formidable 도입, 폼 데이터 분석
npm을 통해 formidable를 도입하면 npm에서 formidable에 대한 설명은 다음과 같습니다.
A node.js module for parsing form data, especially file uploads.
npm install formidable
{
"name": "appname",
"virsion": "0.0.1",
"dependencies": {
"express": "~4.8.8",
"formidable": "1.0.14"
}
}
node 명령을 실행하여 모듈 설치
npm install
업무 논리 함수 작성
1.upload 함수
새 파일:file.js
var formidable = require('formidable');
var fs = require('fs'); //node.js
exports.upload = function(req, res, next){
var message = '';
var form = new formidable.IncomingForm(); //
form.encoding = 'utf-8'; //
form.uploadDir = 'public/upload/'; //
form.keepExtensions = true; //
form.maxFieldsSize = 2 * 1024 * 1024; //
form.parse(req, function(err, fields, files) {
if (err) {
console.log(err);
}
var filename = files.resource.name;
// ,
var nameArray = filename.split('.');
var type = nameArray[nameArray.length-1];
var name = '';
for(var i=0; i
의외의 일이 없으면 파일이 성공적으로 업로드됩니다.
2.download 함수
파일에 있습니다.js 파일 코드 끝 추가:
exports.download = function(req, res){
var path = 'public/upload/file.txt'; //
// filename: , ,
res.download(filepath, filename);
};
이 프로젝트는 Express(node.js 기반의 웹 개발 프레임워크)를 응용하여 리퀘스트,response 대상을 봉인했기 때문에 봉인된res 대상의 다운로드 방법을 직접 호출하여 파일을 다운로드할 수 있습니다.
다음은 루트 제어 파일 루트입니다.js에 코드 추가:
var file = require("file.js"); // ,route.js file.js
app.post('/fileupload', file.upload);
app.get('/download/:id', file.download); // 탭, 안의 kkk는 이 파일의 id를 가리킨다
express가 루트 제어를 진행했기 때문에 php, asp 원생처럼 요청 경로가 파일 경로에 대응하는 것이 아닙니다.static 자원을 제외하고 다른 요청 경로를 설정해야 합니다.따라서 위에서 업로드와 다운로드에 대응하는 루트 규칙을 설정했다.
이렇게 하면 파일의 업로드와 다운로드 기능이 기본적으로 실현되고 구체적인 확장과 수정은 프로젝트의 구체적인 수요에 따라 조정된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 파일 다운로드의 몇 가지 실현 방식을 상세히 설명하다Java 파일을 다운로드하는 방법은 다음과 같습니다. //파일을 온라인으로 열 수 있는 방법 이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.