如何调整待上传的文件大小
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上传的图像文件的大小? [关闭]