You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现前端文件上传仅接收分辨率小于1920x1080的图片

实现方案

核心逻辑是在图片加载到页面前,先读取图片的原始分辨率做校验,只有符合1920x1080以下要求的图片才会被渲染到页面中:

  • 先修正原HTML中accept属性的错误值,将非标准的img/jpeg改为标准MIME类型image/jpeg
  • JS中新增临时图片对象读取原始分辨率的校验逻辑,校验不通过直接终止渲染,给出提示
  • 相比原FileReader转base64的方案,使用URL.createObjectURL处理本地文件性能更高,且用完后主动释放内存避免资源浪费

完整修改后的代码

HTML代码

<input type="file" id="file" accept="image/png, image/jpeg">

JavaScript代码

function Read() {
    const selectFile = document.getElementById("file").files[0];
    // 未选中文件直接返回
    if (!selectFile) return;

    // 创建临时图片对象读取原始分辨率
    const tempImage = new Image();
    const tempUrl = URL.createObjectURL(selectFile);

    tempImage.onload = function () {
        // 及时释放临时URL占用的内存
        URL.revokeObjectURL(tempUrl);

        // 读取图片原始宽高,不受样式影响更准确
        const originWidth = tempImage.naturalWidth;
        const originHeight = tempImage.naturalHeight;

        // 分辨率校验:宽高均小于1920*1080才符合要求
        if (originWidth >= 1920 || originHeight >= 1080) {
            alert("请上传分辨率小于1920x1080的图片");
            return;
        }

        // 校验通过,将图片插入页面
        const renderImage = document.createElement("img");
        renderImage.src = tempUrl;
        document.body.appendChild(renderImage);
    }

    // 非图片文件加载失败的异常处理
    tempImage.onerror = function () {
        URL.revokeObjectURL(tempUrl);
        alert("选中的文件不是有效的图片文件");
    }

    tempImage.src = tempUrl;
}

可选优化方案

如果你不想限制用户上传的图片分辨率,仅需要避免大图片撑满页面,不需要修改上传逻辑,直接给全局图片加如下CSS样式即可:

img {
    /* 宽度最大撑满父容器,高度自适应不会变形 */
    max-width: 100%;
    height: auto;
    /* 额外限制高度不超过浏览器视口高度可以加上下面一行 */
    /* max-height: 100vh; */
}

内容的提问来源于stack exchange,提问作者Dane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 00:45:01