이 글에서는 주로 노드js멀터 구현파일 업로드 및 다운로드 관련 정보를 자세히 소개합니다.
이 글의 예시는 참고용으로 nodejs의 파일 업로드 및 다운로드 구현을 위한 구체적인 코드를 공유하고 있습니다.
1.
를 참고하세요. 🎜>
post를 사용하여 파일을 업로드하려면 html form 태그에 enctype="multipart/form-data"를 설정해야 합니다. 서버에서 multer를 사용할 때의 방법은 기본적으로 공식 웹사이트와 동일하며, app.post('upload', upload.single('name'), function(){})은 단일 파일을 지정합니다. 업로드는 HTML 입력의 이름입니다. 업로드는 성공할 수 있지만 문제는 multer가 업로드 폴더에 업로드된 파일의 이름이 뒤섞여 있지만 접미사가 없다는 것입니다. 이 기능을 추가했습니다.
req.file은 파일 정보인데, 원래 이름을 가져와서 배열 및 스택 처리를 통해 접미사 '.jpg'를 가져온 다음, fs.renameSync() 메서드를 사용하여 파일 이름을 바꾸고, 원래 접미사. 이렇게 하면 실제 업로드가 성공하게 됩니다. 유일한 단점은 파일명이 바뀌지 않는다는 점과, 공식 홈페이지 방식을 사용했을 때 오류가 발생해서 자세히 살펴보지는 못했습니다. .
인터넷은 기본적으로 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 온라인 동영상 튜토리얼JavaScript 중국어 참조 매뉴얼 php.cn Dugu Jiujian (3) - JavaScript 동영상 튜토리얼위 내용은 nodejs multer를 사용하여 파일을 업로드하고 다운로드하는 방법에 대한 예제 튜토리얼 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!