如何调整待上传的文件大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何调整待上传的文件大小相关的知识,希望对你有一定的参考价值。

参考技术A 先上传PSD的图片再填写图片的大小分辨率 模式 格式等等最后做一个缩略图 然后等待审核就可以了 参考技术B 设置文件上传的最大大小
系统环境:win8

开发环境:asp.net mvc

功能:文件上传

在上传文件时,比较小的文件会直接上传成功,大的文件页面报错:“文件超过了最大请求长度”。

经过查明:

需要在配置文件里面设置文件上传限定的两个属性值:maxAllowedContentLength,maxRequestLength 允许上传文件的长度,和请求的长度,两个大小需要设置一致,如果不一致,则以请求长度为准。

The maximum request size in kilobytes. The default size is 4096 KB (4 MB). 默认请求长度只有4M. 设置的单位都为byte

<system.web>
  <httpRuntime maxRequestLength="2147483647" executionTimeout="36000" delayNotificationTimeout="36000"/>
</system.web>

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

以上是对某个站点或者某个应用上限制大小,配置的web.config

要以上配置有效的前提是,要确保applicationhost.config中对该项修改的权限已经放开。

applicationhost.config文件路径在 C:\Windows\System32\inetsrv\config 下

可通过如下设置进行更改:

modify the overrideModeDefault from "Deny" to "Allow" like so:

<sectionGroup name="system.webServer">

  <sectionGroup name="security">
  <section name="requestFiltering" overrideModeDefault="Allow" />

  </sectionGroup>
</sectionGroup>

确认修改过applicationhost.config中上述设置以后,再进行web.config中的设置。

二: 也可以直接设置服务器级别的文件上传大小,在applicationhost.config文件中加上以下字段

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

也可以使用命令模式修改:

也可以使用命令行模式修改applicationhost.config:

%windir%\system32\inetsrv\appcmd set config -section:requestFiltering -requestLimits.maxAllowedContentLength:2147483647

命令模式尚未试过。

如何在nodejs中使用sharp调整图像大小然后使用multer上传

【中文标题】如何在nodejs中使用sharp调整图像大小然后使用multer上传【英文标题】:How to resize image with sharp then upload with multer in nodejs 【发布时间】:2019-05-03 07:07:42 【问题描述】:

我正在开发一项功能,允许用户使用 nodejs 将图像上传到 mongodb:

我的问题:

从用户的请求中获取图像文件并执行 2 个任务:例如,将当前图像以集合名称“Origin_image”存储到 mongodb,然后调整当前图像大小并以集合名称“Thumbnail_image”存储到 mongodb

到目前为止我的解决方案:

我只是通过使用 multer-gridfs-storage 和 multer 来存储成功的原始图像,如下面的代码

const multer = require('multer'); const GridFsStorage = require('multer-gridfs-storage');

const multer = require('multer'); const GridFsStorage = require('multer-gridfs-storage');

        let storageFS = new GridFsStorage(
            db: app.get("mongodb"),
            file: (req, file) => 
                return new Promise((resolve, reject) => 
                    crypto.randomBytes(16, (err, buf) => 
                        if (err) 
                            return reject(err);
                        
                        const filename = file.originalname;
                        const fileInfo = 
                            filename: filename,
                            bucketName: 'images'
                        ;
                        resolve(fileInfo);
                    );
                );
            
        );

    var upload = multer( storage: storageFS ).single('image');

    exports.uploadImage = async function (req, res) 
    try 
        upload(req, res, function (err) 
            if (err) 
                return res.send(err)
            
            res.json(
                status: true,
                filePath: req.file.originalname
            );
        );
     catch (error) 
        res.send(error);
    

有人想解决我的问题吗?谢谢!

【问题讨论】:

【参考方案1】:

如果您在前端使用 Angular,则让最终用户处理图像大小调整,这样您的服务器就不必处理开销。我目前正在使用ng2-img-max 来调整图像大小。您可以在文件更改时启动调整大小。

我也想要缩略图,然后是原始的,但这会在调整两者的大小时造成巨大的性能问题,然后再如何将它们链接为 GridFs 存储它们,然后才能对它们进行任何操作,剩下的就是回复。因此,为自己节省一些时间。只调整一次大小,为用户调整到您的有限大小,然后为显示缩略图,使用 sharp 和自定义查询参数来显示您想要的大小。

祝你好运,编码愉快。

【讨论】:

以上是关于如何调整待上传的文件大小的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ImageField 模型调整使用 Django 上传的图像文件的大小? [关闭]

如何使用ImageField模型调整使用Django上传的图像文件的大小? [关闭]

在上传之前调整图像文件的大小;我们可以覆盖临时文件并上传吗?

springboot调整上传文件大小限制

jQuery文件上传调整大小上传的图像

使用express的bodyParser上传文件,请问如何设置文件大小