javascript - 在 img html 标签中限制文件大小
问题描述
我在我的网站上显示上传到另一个平台的图像,但我想保护我的用户免于下载超大文件(例如 50MB gif)。我无法控制上传过程,也无法在上传期间限制文件。
是否有任何选项可以限制网页上图像的文件大小?<img src="..." maxSize="5MB" />
如果检测到文件大于 5MB,浏览器会取消下载吗?
解决方案
在您的站点上呈现图像之前,您可以执行 HEAD 请求并检查Content-Length
响应的标头。
头
如果使用 HTTP GET 方法请求请求的 URL,则HTTP
HEAD
方法请求将返回的标头。HEAD
例如,如果 URL 可能会产生大量下载,则HEAD
请求可以读取其Content-Length标头以检查文件大小,而无需实际下载文件。
来源:https ://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD
例如,您可以使用fetch api:
// This URL should point to a very large image, but currently it points to an avatar
const imageUrl = 'https://www.gravatar.com/avatar/eb03f51fd573efda46453d9b928de5e2?s=48&d=identicon&r=PG';
// Example
fetch(imageUrl, { method: 'HEAD' })
.then(response => {
const imageSizeInBytes = response.headers.get('content-length');
console.log(`Image size: ${imageSizeInBytes} bytes.`);
});
推荐阅读
- haskell - Haskell foldl 和 foldl1 产生“没有由文字引起的 (Num [Char]) 的实例”
- android - Function unresolved reference in main activity
- python - tls1记录python ssl上的tls1.2握手
- c - 使用链表在 C 中堆栈
- javascript - 如何使用 reactjs 和 css 创建垂直选项卡
- r - Rmarkdown 中的分组列
- java - 如何将此数组切换为用户未输入
- javascript - 将 Obj 转换为字符串 HTML
- office365 - Microsoft Graph 范围“Domain.ReadWrite.All”
- python - 从零开始实现卷积神经网络