【问题标题】:Express limit file size azurewebsitesExpress 限制文件大小 azurewebsites
【发布时间】:2020-05-15 16:13:34
【问题描述】:

我正在尝试将文件从前端上传到后端并将文件存储在 azurestorage 上,当文件大小小于 30mb 时我的代码可以正常工作,但如果文件大小大于 30mb 则不起作用

console.log('- 11111 -')
let fileObj = {};
let companyId = 'tetst';
var datetimestamp = Date.now();
var aux = Math.floor((Math.random() * 1000) + 100);
datetimestamp = datetimestamp + aux.toString();
let percentage = 0;
let body = req.body;

console.log('- 1122112 -')



let tran;
try {

    console.log('- 1 -')

    var blobService = azureStorage.createBlobService(storageConnectionString);
    var form = new multiparty.Form();
    await form.on('part', async function(part) {
        if (part.filename) {

            console.log('- 2 -')

            var size = part.byteCount;

            fileObj.originalname = part.filename;
            fileObj.contenttype = part.headers['content-type'];

            var name = companyId +'/' + datetimestamp + '.' +part.filename.split('.')[part.filename.split('.').length -1];

            fileObj.name = name;

            await blobService.createBlockBlobFromStream(container, name, part, size, async function(error, result, response) {
                if (error) {
                    res.status(409).send({ Grrr: error });
                    return;
                }
                console.log('- 22 -')
                fileObj.BlobResult = result;
                fileObj.response = response;

                res.status(201).send();

            });
        } else {
            form.handlePart(part);

        }
        part.resume();
    });


    // Close emitted after form parsed
    await form.on('close', function() {
        console.log('Upload completed!');

    });
    await form.on('aborted', () => {
        console.log('aborted!!!')
    });
    // Errors may be emitted
    // Note that if you are listening to 'part' events, the same error may be
    // emitted from the `form` and the `part`.
    await form.on('error', function(err) {
        console.log('Error parsing form: ' + err.stack);
        res.status(400).send(err);
    });
    // Parse req
    form.parse(req);

}
catch(err) {        

    next(err);
}

如果文件大于 30mb,则不显示 console.log。

在 localhost 中它每次都可以工作,如果大小大于 30mb(我用 104mb 文件测试),但是当代码在 azure(azurewebsites)中时,它不起作用

快递:v4.16.4 节点:v12.16.2

【问题讨论】:

  • 默认情况下,您的最大大小确实为 30,000,000 字节 (~28.6MB)。在c# 中,您可以通过更改web.config 中的最大允许内容长度设置来进行配置。我假设你会用node.js 做类似的事情,但由于我不使用它,所以我不能给你具体的信息。希望这将为您的搜索指明正确的方向;)

标签: node.js azure express azure-storage multiparty


【解决方案1】:

我在 web.config 上使用这个解决了它

<system.webServer>
<security>
    <requestFiltering>
        <requestLimits maxAllowedContentLength="2147483648" />
    </requestFiltering>
</security>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2011-04-05
    • 2010-10-26
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多