javascript - MEANJS : 413 (Request Entity Too Large)

标签 javascript angularjs mongodb mongoose mean-stack

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

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

这是我的 Mongoose 模式:

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

Error: request entity too large
    at makeError (Angular\expresstest\node_modules\body-parser\node_modules\raw-body\index.js:184:15)
    at module.exports (Angular\expresstest\node_modules\body-parser\node_modules\raw-body\index.js:40:15)
    at read (Angular\expresstest\node_modules\body-parser\lib\read.js:62:3)
    at jsonParser (Angular\expresstest\node_modules\body-parser\lib\types\json.js:87:5)
    at Layer.handle [as handle_request] (Angular\expresstest\node_modules\express\lib\router\layer.js:76:5)
    at trim_prefix (Angular\expresstest\node_modules\express\lib\router\index.js:270:13)
    at Angular\expresstest\node_modules\express\lib\router\index.js:237:9
    at Function.proto.process_params (Angular\expresstest\node_modules\express\lib\router\index.js:312:12)
    at Angular\expresstest\node_modules\express\lib\router\index.js:228:12
    at Function.match_layer (Angular\expresstest\node_modules\express\lib\router\index.js:295:3)

最佳答案

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

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

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

希望对你有帮助!!!

关于javascript - MEANJS : 413 (Request Entity Too Large),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26287968/

相关文章:

javascript - Angular 2 fakeAsync 在使用 tick() 的函数中等待超时?

AngularJS $http、CORS 和 http 身份验证

javascript - 使用聚合框架或 MapReduce 将事件数据中的文档嵌入到 MongoDB 中

MongoDB 编辑数组中的对象(如果存在) - 否则推送一个新对象

javascript - 在 Aurelia 中,我可以从我的包含 View 模型中绑定(bind)一个函数以供我的自定义元素调用吗?

javascript - array.forEach 之后的回调函数

javascript - 中心背景幻灯片自动调整保持纵横比

javascript - 错误: TypeError: undefined is not a constructor (evaluating '$browser.cookies()' )

angularjs batarang 无法使用本地文件

python - MongoDB 集合到 pandas Dataframe