我正在尝试增加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;
}
答案 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;}));
您必须以字节为单位设置限制。