zoukankan      html  css  js  c++  java
  • 使用 multiparty 模块进行文件上传

    ar fs = require('fs');
    var path = require('path');
    var express = require('express');
    var bodyParser = require('body-parser');
    var app = express();
    //登录
    var Login_File = path.join(__dirname, 'demo/tongxunlu.json'); 
    var router = express.Router();
    var multiparty = require('multiparty');
    var util = require('util');
    // 图片上传
    app.post('/demo/upload',function(req, res) {
     // don't forget to delete all req.files when done 
     //生成multiparty对象,并配置上传目标路径
     var form = new multiparty.Form({uploadDir: './upload/picture/'});
    
     //上传完成后处理
     form.parse(req, function(err, fields, files) {
     var obj ={};
    
      var filesTmp = JSON.stringify(files,null,2);
     if(err){
          console.log('parse error: ' + err);
       }
       else {
         
         console.log('parse files: ' + filesTmp);
         var inputFile = files.inputFile[0];
         var uploadedPath = inputFile.path;
         var dstPath = './upload/picture/' + inputFile.originalFilename;
       //重命名为真实文件名
       fs.rename(uploadedPath, dstPath, function(err) {
         if(err){
           console.log('rename error: ' + err);
       res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'});
       res.end("{'status':200, 'message': '上传失败!'}");
         } else {
           console.log('rename ok');                
       res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'});
       res.end("{'status':400, 'message': '上传成功!'}");
         }
       });
       }
     });
    });
    module.exports = router;
    
    1.var form = new multiparty.Form({uploadDir: './upload/picture/'});
    需要注意一下,这里的文件路径并不会自动创建,需要用户在开发过程中自己在项目的根目录中创建该路径,否则就会报文件路径不存在的错误。
    2.var inputFile = files.inputFile[0];
    这行代码中,inputFile是form表单中的input组件的name值,这里要在postman中将请求参数调整成inputFile,否则就会报变量未定义的错误。
    
    作者:贾亦真亦贾
    链接:https://www.jianshu.com/p/a78ee020f549
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    6-stm32 滴答定时器(delay不带中断延时)
    5-stm32 滴答定时器(delay中断延时)
    4- stm32 gpio重映射
    3- stm32 gpio寄存器
    2-stm32 gpio位带
    Linux Command
    DIV+CSS规范命名
    JS事件报错之Cannot set property 'onclick' of null
    创建对象的三种方式
    密码的显示和隐藏
  • 原文地址:https://www.cnblogs.com/BlingSun/p/9232810.html
Copyright © 2011-2022 走看看