错误:请求实体太大IN NODE服务器

时间:2017-07-27 08:05:18

标签: node.js body-parser

我正在尝试增加nodejs服务器中的文件大小限制。搜索和更改后,我仍然得到相同的错误。尝试了stackoverflow和其他网站上提到的所有内容,但无法解决问题。我一直在浪费更多的时间。请一些人帮助我

app.js:

var express = require("express");

var Middlewares = require("./config/middlewares/middleware");


var bodyParser = require('body-parser');  

var app = express();

var port = parseInt(process.env.PORT, 10) || 5000;

app.set("port", port);

app.use(Middlewares.configuration);

app.listen(port, function () {
    console.log("Node app is running at localhost:" + port);
});

app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));

package.json:

{
  "name": "dinely.api",
  "version": "2.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "dinely",
  "license": "ISC",
  "dependencies": {
    "express": "*",
    "body-parser": "*",
    "file-system": "^2.2.2",
    "jsonwebtoken": "^7.4.1",
    "jwt-simple": "^0.5.1",
    "method-override": "*",
    "mongoose": "*",
    "passport": "^0.3.2",
    "passport-jwt": "^2.2.1"
  }
}

前端

html:

<div class="column">
                            <p class="label">Logo<span class="required">*</span></p>
                            <div >
                                <input type="file" name="logo" required (change)="fileChange(input)" #input style="text-indent: 0px;"/>
                                <img [attr.src]='file_srcs' alt="" style="width:15%;margin-top:10px;"/>
                                <div *ngIf="logoValid" class="help-block" style="color:red">Select Image</div>
                            </div>
                        </div>

component.ts:

  fileChange(input) {  
      debugger;
        this.readFiles(input.files);  

  }  

  readFiles(files) {  

      let reader = new FileReader();

      this.readFile(files[0], reader, (result) => {  

              var img = document.createElement("img");  
              img.src = result;  

              this.fileExtension = files[0].type.replace("image/","");

              this.resize(img, 250, 250, (resized_jpeg, before, after) => {  

                  this.debug_size_before.push(before);  
                  this.debug_size_after.push(after);  
                  console.log("before : " + this.debug_size_before + " after : " + this.debug_size_after)
                  this.file_srcs = resized_jpeg; 

                  var formdata =  new FormData();
                  formdata.append("formImg",resized_jpeg);

                  console.log(formdata);

              });  
          });  
  }

  // for image compression
  resize(img, MAX_WIDTH: number, MAX_HEIGHT: number, callback) {  

    return img.onload = () => {  

        var width = img.width;  
        var height = img.height;  

        if (width > height) {  
            if (width > MAX_WIDTH) {  
                height *= MAX_WIDTH / width;  
                width = MAX_WIDTH;  
            }  
        } else {  
            if (height > MAX_HEIGHT) {  
                width *= MAX_HEIGHT / height;  
                height = MAX_HEIGHT;  
            }  
        }  

        var canvas = document.createElement("canvas");  

        canvas.width = width;  
        canvas.height = height;  
        var ctx = canvas.getContext("2d");  
        ctx.drawImage(img, 0, 0, width, height);  

        var dataUrl = canvas.toDataURL('image/' + this.fileExtension);  

        callback(dataUrl, img.src.length, dataUrl.length);  
    };  
  }

  readFile(file, reader, callback) {  

      reader.onload = () => {  
          callback(reader.result);  
          this.imageURL = reader.result;  
          this.uploadImgToServer(reader.result);
      }  

      reader.readAsDataURL(file);
  }

  // upload image to server api call
  uploadImgToServer(url){

    return this._dataService.uploadImage({

              "imgUrl" : url,
              "path" : "/images/RestaurantLogos",
              "name" : this.generateRandomImgName(),
              "extension" : this.fileExtension 

            }).then(
              data => {           
                console.log("iamge uploaded");
              },
              error => {
              });
  } 

  // generates random string for image name
  generateRandomImgName(){

    var dt = new Date(); 
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";  

    for (var i = 0; i < 5; i++){

      text += possible.charAt(Math.floor(Math.random() * possible.length)); 
    }  

    this.imagepath = text;

    return text;
  }

1 个答案:

答案 0 :(得分:1)

检查此链接

https://expressjs.com/en/resources/middleware/body-parser.html https://www.npmjs.com/package/bytes

<强>限制

控制最大请求正文大小。如果这是一个数字,则该值指定字节数;如果它是一个字符串,则将值传递给字节库以进行解析。默认为&#39; 100kb&#39;。

他们提到限制值以字节为单位

app.use(bodyParser.json({limit:&#39; 50mb&#39;}));

您必须以字节为单位设置限制。