nodejs multer 파일 업로드 및 다운로드 실현
1.소개
파일 업로드 와 다운로드 에 관 한 demo 를 만 들 었 고 Multer 를 미들웨어 로 선택 하여 데이터 처 리 를 했 습 니 다.
multer 에 대해 서 는 중국어 번역 문서https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md또는 공식 문 서 를 참고 하 시기 바 랍 니 다.
2.파일 업로드
html form 태그 에 enctype="multipart/form-data"를 설정 해 야 파일 을 업로드 할 수 있 습 니 다.post 방식 으로 서버 에서 multer 를 사용 할 때 기본적으로 홈 페이지 와 같 습 니 다.미들웨어 multer,app.post('\upload',upload.single('name'),function(){}을 참조 합 니 다.단일 파일 업 로드 를 지정 합 니 다.인 자 는 html input 에 있 는 name 입 니 다.그러면 업로드 에 성공 할 수 있 습 니 다.그러나 문 제 는 multer 가 접 두 사 를 상관 하지 않 습 니 다.upload 폴 더 에 올 린 파일 은 무질서 한 이름 이 있 지만 접두사 가 없어 서 이 기능 을 추 가 했 습 니 다.
req.file 은 파일 정보 로 원래 이름 을 얻 고 배열 과 스 택 등 처 리 를 통 해 접미사'.jpg'를 얻 을 수 있 으 며 fs.renameSync()방법 으로 파일 이름 을 바 꾸 고 원래 접 두 사 를 추가 합 니 다.이렇게 진짜 업로드 성공.파일 이름 을 바 꾸 지 못 하고 홈 페이지 를 이용 하 는 방식 에 오류 가 생 겨 깊이 따 지지 않 은 것 이 유일한 단점 이다.
3.파일 다운로드
인터넷 은 기본적으로 express 가 res.다운 로드 에 대한 패키지 와 fs 방법 을 위주 로 하고 폴 더 를 정적 파일 로 설정 해 야 합 니 다.문 제 는 클릭 하면 다운로드 할 파일 이 그림 이 든 음악 이 든 새 페이지 에 표 시 됩 니 다.이것 은 나 를 매우 괴 롭 혔 지만,오랫동안 찾 았 지만 잘 해결 되 지 않 았 다.IE 로 접근 하면 다운로드 할 지 볼 지 선택 할 수 있 습 니 다.반하 다아무튼 그렇습니다.하룻밤 의 노력 에 만족 합 니 다.히히
서버
//index.js
var fs = require('fs')
var express = require('express')
var multer = require('multer')
const path = require('path');
var app = express();
var upload = multer({dest:'upload/'});
// ( )( )
app.post('/upload-multi',upload.array('myfile',2),function(req,res,next){
res.send("2 done");
})
//
app.post('/upload-single',upload.single('myfile'),function(req,res,next){
var file=req.file;
// console.log(" :%s",file.originalname);
// console.log("mime:%s",file.mimetype);
//
name=file.originalname;
nameArray=name.split('');
var nameMime=[];
l=nameArray.pop();
nameMime.unshift(l);
while(nameArray.length!=0&&l!='.'){
l=nameArray.pop();
nameMime.unshift(l);
}
//Mime
Mime=nameMime.join('');
console.log(Mime);
res.send("done");
//
fs.renameSync('./upload/'+file.filename,'./upload/'+file.filename+Mime);
})
// (chrome 。. )
// download
app.use('/download', express.static(path.join(__dirname, 'download')));
// app.get('/download',function(req,res){
// var path='./download/aa.mp3';
// res.download(path,'aa.mp3');
// });
app.get('/download', function(req, res){
var file = __dirname + '/download/aa.mp3';
res.download(file);
});
app.get('/',function(req,res,next){
res.sendFile(__dirname+"/index.html");
})
app.listen(3000);
클 라 이언 트
//index.html
<!DOCTYPE html>
<html>
<head>
<title> </title>
<meta charset="utf-8">
</head>
<body>
<form enctype="multipart/form-data" action="/upload-single" method="post">
<input type="file" name="myfile"></input>
<input type="submit" value=" "></input>
</form>
<form enctype="multipart/form-data" action="/upload-multi" method="post">
<input type="file" name="myfile"></input>
<input type="file" name="myfile"></input>
<input type="submit" value=" "></input>
</form>
<a href="download/aa.mp3" rel="external nofollow" > </a>
</body>
</html>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Node.js를 AWS서버에서 사용하는 실습간단한 예제와 함께 AWS에서 Node.js를사용하는 법을 배워보도록 하겠다. 해당 github에 있는 레포지토리로 사용을 할 것이다. 3000번 포트로 Listen되는 예제이고 간단히 GET, POST, DELET...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.