nodejs multer 파일 업로드 및 다운로드 실현

본 논문 의 사례 는 nodejs 가 파일 업로드 와 다운 로드 를 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
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>

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기