nodejs multer를 사용하여 파일을 업로드하고 다운로드하는 방법에 대한 예제 튜토리얼 공유

零下一度
풀어 주다: 2017-05-12 09:46:36
원래의
2095명이 탐색했습니다.

이 글에서는 주로 노드js멀터 구현파일 업로드 및 다운로드 관련 정보를 자세히 소개합니다.

이 글의 예시는 참고용으로 nodejs의 파일 업로드 및 다운로드 구현을 위한 구체적인 코드를 공유하고 있습니다.

1.

파일 업로드 및 다운로드에 대한 데모를 만들고 데이터 처리를 위한 미들웨어로 Multer를 선택했습니다.

멀터에 대한 내용은 중국어 번역 문서 github.com/expressjs/multer/blob/master/doc/README-zh-cn.md나 공식 문서


를 참고하세요. 🎜>

2 . 업로드 파일 업로드


post를 사용하여 파일을 업로드하려면 html form 태그에 enctype="multipart/form-data"를 설정해야 합니다. 서버에서 multer를 사용할 때의 방법은 기본적으로 공식 웹사이트와 동일하며, app.post('upload', upload.single('name'), function(){})은 단일 파일을 지정합니다. 업로드는 HTML 입력의 이름입니다. 업로드는 성공할 수 있지만 문제는 multer가 업로드 폴더에 업로드된 파일의 이름이 뒤섞여 있지만 접미사가 없다는 것입니다. 이 기능을 추가했습니다.


req.file은 파일 정보인데, 원래 이름을 가져와서 배열 및 스택 처리를 통해 접미사 '.jpg'를 가져온 다음, fs.renameSync() 메서드를 사용하여 파일 이름을 바꾸고, 원래 접미사. 이렇게 하면 실제 업로드가 성공하게 됩니다. 유일한 단점은 파일명이 바뀌지 않는다는 점과, 공식 홈페이지 방식을 사용했을 때 오류가 발생해서 자세히 살펴보지는 못했습니다. .


3.다운로드 파일 다운로드


인터넷은 기본적으로 express의 res.download 캡슐화와 파일 방식에 주의하세요. 폴더는 정적 파일로 설정됩니다. 문제는 클릭하면 다운로드할 파일이 사진이든 음악이든 새 페이지에 표시된다는 것입니다. . 이것이 나를 많이 괴롭히지만 오랫동안 검색해도 좋은 해결책을 찾지 못했습니다. 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>
로그인 후 복사

[관련 추천]

무료 js 온라인 동영상 튜토리얼

2.

JavaScript 중국어 참조 매뉴얼

3.

php.cn Dugu Jiujian (3) - JavaScript 동영상 튜토리얼

위 내용은 nodejs multer를 사용하여 파일을 업로드하고 다운로드하는 방법에 대한 예제 튜토리얼 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿