繁体   English   中英

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

[英]Error: request entity too large IN NODE server

我正在尝试增加nodejs服务器中的文件大小限制。 搜索并进行更改后,iam仍然会收到相同的错误。 尝试了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;
  }

签入此链接

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

限制

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

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

app.use(bodyParser.json({limit:'50mb'}));

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM