> 웹 프론트엔드 > JS 튜토리얼 > Express+multer는 노드 이미지를 업로드하는 특정 단계를 구현합니다.

Express+multer는 노드 이미지를 업로드하는 특정 단계를 구현합니다.

php中世界最好的语言
풀어 주다: 2018-04-12 17:31:43
원래의
2104명이 탐색했습니다.

이번에는 express+multer를 사용하여 노드 이미지를 업로드하는 구체적인 단계를 알려드리겠습니다. node 이미지 업로드를 구현하기 위한 express+multer의 주의사항은 무엇인가요?

다음은 node에서 이미지 업로드 기능을 구현하기 위해 express+multer를 사용하는 방법을 소개합니다.

프런트엔드에서는 ajax를 사용하여 이미지를 비동기적으로 업로드하고, 파일 입력을 통해 이미지를 업로드하고, formdata 객체를 사용하여 이미지 데이터를 처리하고, 서버에 게시합니다

업로드 라우팅 인터페이스를 처리하려면 노드에서 multer

middleware

를 사용하세요. 멀터 문서

package.jsonhtml 부분

<body>
<p class="form-group">
    <label>File input:</label>
    <input type="file" name="file" id="file">
    <p id="result"></p>
    <img id="img" src="">
  </p>
  <button id="upload" class="btn btn-default">提交</button>
  </body>
로그인 후 복사

js 부분

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
  <script>
    //上传图片的业务逻辑函数
    function uploadFile(){
      //上传图片的input
      var file = document.getElementById("file")
      //因为准备用post提交,又因为图片的内容比较大,所以我们选择使用formdata来承载数据
      //创建formdata对象
      var formData = new FormData();
      //给formdata对象中放入数据(键值对的方式)
      formData.append('file',file.files[0]);
      //提交请求
      $.ajax({
        url: '/upload',//请求路径
        type: 'POST',
        data: formData,
        contentType: false,//为了让浏览器根据传入的formdata来判断contentType
        processData: false,//同上
        success: function(data){
          if(200 === data.code) {
            $('#result').html("上传成功!");
            $('#img').attr('src',data.data);
          } else {
            $('#result').html("上传失败!");
          }
          console.log(2)
        },
        error: function(){
          $("#result").html("与服务器通信发生错误");
        }
      });
      console.log(1)
    }
    //给按钮添加点击事件
    function postPage() {
        //上传按钮
        var uploada = document.getElementById('upload');
        uploada.addEventListener("click",function () {
          uploadFile();
        },false);
    }
    window.onload = function () {
      postPage();
    }
</script>
로그인 후 복사

NodeJS 논리 코드

const http = require('http')
const path = require('path')
const express = require('express')
//是nodejs中处理multipart/form-data数据格式(主要用在上传功能中)的中间件
//文档:https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md
const multer = require('multer')
const app = express()
//配置express的静态目录
app.use(express.static(path.join(dirname, 'public')));
app.get('/',(req,res)=>{
  res.sendFile(dirname+'/index.html')
})
//配置diskStorage来控制文件存储的位置以及文件名字等
var storage = multer.diskStorage({
  //确定图片存储的位置
  destination: function (req, file, cb){
    cb(null, './public/uploadImgs')
  },
![](http://images2017.cnblogs.com/blog/1283058/201802/1283058-20180201154342296-515041615.png)
  //确定图片存储时的名字,注意,如果使用原名,可能会造成再次上传同一张图片的时候的冲突
  filename: function (req, file, cb){
    cb(null, Date.now()+file.originalname)
  }
});
//生成的专门处理上传的一个工具,可以传入storage、limits等配置
var upload = multer({storage: storage});
//接收上传图片请求的接口
app.post('/upload', upload.single('file'), function (req, res, next) {
  //图片已经被放入到服务器里,且req也已经被upload中间件给处理好了(加上了file等信息)
  //线上的也就是服务器中的图片的绝对地址
  var url = '/uploadImgs/' + req.file.filename
  res.json({
    code : 200,
    data : url
  })
});
http.createServer(app).listen(3000,()=>{
  console.log('server is listening')
})
로그인 후 복사

기분은 좋은데 왜 블로그 파크가 나를 위해 홈페이지를 제거했는지 모르겠습니다....

再发一次,if(delete){
alert('Never publish anything again.')
}else{
alert(1)
}
로그인 후 복사

이 기사의 사례를 읽으신 후 방법을 마스터하신 것 같습니다. 더 흥미로운 콘텐츠를 보려면 결제하세요. PHP 중국어 웹사이트의 다른 관련 기사에 주목하세요!

추천 자료:

Django의 쿠키 사용에 대한 자세한 설명

URL 매개변수를 JS 정규식으로 바꾸는 방법

위 내용은 Express+multer는 노드 이미지를 업로드하는 특정 단계를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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