【问题标题】:MEANJS : 413 (Request Entity Too Large)MEANJS:413(请求实体太大)
【发布时间】:2014-12-04 22:44:05
【问题描述】:

我正在使用 MEANJS 堆栈,我使用 ng-flow 上传图像并将 imgsrc 保存为 base64 url​​。

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARkAAACzCAYAAAC94GgrA....

这是我的猫鼬模式:

var ServiceSchema = new  mongoose.Schema({
    name : String,
    url: String,
    description : String,
    category : String,
    imgsrc: String
});

对于大图像,我遇到了Request Entity Too Large服务器错误。

我可以在上传之前调整图片大小,但这仍然只允许我的图片大小为 200 x 200

$scope.resizeimageforupload = function(img){
        var canvas = document.getElementById('canvas');

        var MAX_WIDTH = 200; //400; too big still
        var MAX_HEIGHT = 200; //300 too big still
        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;
          }
        }
        canvas.width = width;
        canvas.height = height;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0, width, height);

        var dataURL = canvas.toDataURL("image/png");
        dataURL.replace(/^data:image\/(png|jpg);base64,/, "");

        return dataURL;
    };

关于变通或替代解决方案的任何想法?

请求实体太大:413

错误:请求实体太大
    在 makeError (Angular\expresstest\node_modules\body-parser\node_modules\raw-body\index.js:184:15)
    在 module.exports (Angular\expresstest\node_modules\body-parser\node_modules\raw-body\index.js:40:15)
    读取时(Angular\expresstest\node_modules\body-parser\lib\read.js:62:3)
    在 jsonParser (Angular\expresstest\node_modules\body-parser\lib\types\json.js:87:5)
    在 Layer.handle [as handle_request] (Angular\expresstest\node_modules\express\lib\router\layer.js:76:5)
    在 trim_prefix (Angular\expresstest\node_modules\express\lib\router\index.js:270:13)
    在 Angular\expresstest\node_modules\express\lib\router\index.js:237:9
    在 Function.proto.process_params (Angular\expresstest\node_modules\express\lib\router\index.js:312:12)
    在 Angular\expresstest\node_modules\express\lib\router\index.js:228:12
    在 Function.match_layer (Angular\expresstest\node_modules\express\lib\router\index.js:295:3)

【问题讨论】:

    标签: javascript angularjs mongodb mongoose mean-stack


    【解决方案1】:

    最近,我遇到了这个问题,我刚刚在我的快递应用程序中添加了app.use(bodyParser.json({ limit: "50mb" }));这一行,它就起作用了:)

    还有一件事不要忘记在app.use(bodyParser.json())之前添加上面的代码行,否则它将不起作用。

    在上面的代码行之前,你必须为 bodyparser 设置任何值。

    因为,express 将返回其默认值,您的更改将不会生效。我希望这可能会有所帮助:)

    【讨论】:

      【解决方案2】:

      2016,可能有变化,除了bodyparser的'limit'之外,我还需要设置'type',例如: var bodyParser = require('body-parser');

        var app = express();
        var jsonParser       = bodyParser.json({limit:1024*1024*20, type:'application/json'});
        var urlencodedParser = bodyParser.urlencoded({ extended:true,limit:1024*1024*20,type:'application/x-www-form-urlencoding' })
      
        app.use(jsonParser);
        app.use(urlencodedParser);
      

      【讨论】:

        【解决方案3】:

        您可以添加以下内容来表达配置:

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

        基本上您需要配置 Express 网络服务器以接受更大的请求大小。将 50mb 替换为您想要接受的任何 maxsize。

        希望对你有帮助!!!

        【讨论】:

        • 工作得很好!;不知道这是干什么用的:app.use(methodOverride({limit: '50mb'}));但它是未定义的。
        • @aarosil:那么methodOverride 就不需要了吗?如果是这样的话,你能把它从你的答案中删除吗?
        • 这救了我的命。谢谢。
        • 这对我不起作用。我添加了它,但我不断收到 OP 中的错误。
        • 似乎在客户使用本地护照提供登录信息后的某个时间点,正在加载限制大小为 100 Kb 的原始正文。
        猜你喜欢
        • 2014-12-30
        • 2014-12-23
        • 2012-09-23
        • 2015-10-04
        • 2015-01-25
        • 2017-08-28
        • 2019-05-24
        • 1970-01-01
        相关资源
        最近更新 更多