news 2026/10/26 10:18:32

js图片上传详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
js图片上传详解
  1. 点选择框选图片 → 校验(是不是图片、大小)→本地预览(不用发给服务器,浏览器自己看)→ 把图片文件打包成FormData
  2. 后端(接口干活):接收FormData里面的图片 → 存到服务器文件夹 → 返回图片线上地址给前端

重点:jQuery 本身不能直接把图片存服务器!必须靠 AJAX 发请求传给后端接口

一、基础 HTML 结构

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>jQuery单图上传</title> <!-- 先引入jQuery --> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <style> #previewImg{ width:200px; height:200px; border:1px solid #ccc; display:block; margin-top:10px; } </style> </head> <body> <!-- 文件选择框 accept 只允许选图片 --> <input type="file" id="fileInput" accept="image/jpeg,image/png"> <!-- 预览图片 --> <img id="previewImg" alt="预览图"> <!-- 上传按钮 --> <button id="uploadBtn">提交上传</button> <script> $(function(){ // 先存一个全局变量,保存选中的文件 let targetFile = null; // 监听文件选择 change事件(对应你学的on) $("#fileInput").on("change", ()=>{ // $(this)[0] 把jQuery对象转原生DOM,files是选中的文件列表 let inputDom = $("#fileInput")[0]; // 判断有没有选文件 if(!inputDom.files.length){ return; } // 拿到第一个文件 targetFile = inputDom.files[0]; // ✅ 校验:是不是图片 if(!targetFile.type.startsWith("image/")){ alert("只能选择图片!"); targetFile = null; return; } // ✅ 校验:大小 2M = 2*1024*1024 if(targetFile.size > 2*1024*1024){ alert("图片不能超过2M!"); targetFile = null; return; } // ========== 本地预览 两种办法,推荐FileReader ========== let reader = new FileReader(); // 读完文件触发load reader.onload = (e)=>{ // 把base64地址赋值给img的src $("#previewImg").attr("src", e.target.result); } // 读取文件,转base64 reader.readAsDataURL(targetFile); }) // ✅ 点击按钮,AJAX上传到后端接口 $("#uploadBtn").on("click", ()=>{ if(!targetFile){ alert("请先选择图片!"); return; } // FormData:专门用来传文件的对象 let formData = new FormData(); // append(参数名, 文件) 这个参数名要和后端商量好! formData.append("imgFile", targetFile); $.ajax({ url:"/api/upload", // 后端给你的上传接口地址 type:"post", data: formData, // 传文件必须关这两个!固定写法 processData: false, contentType: false, success:(res)=>{ console.log("上传成功", res); alert("上传成功,图片地址:"+res.url) }, error:(err)=>{ console.log("上传失败", err); alert("上传出错!") } }) }) }) </script> </body> </html>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 10:17:44

从Java到AI产品经理:大模型应用初体验(收藏版)

本文分享了作者从Java开发转型为AI产品经理的初体验。文章指出&#xff0c;虽然大模型应用领域没有外界吹的那么“高大上”&#xff0c;但确实比传统开发更有趣。作者认为&#xff0c;转型并非从零开始&#xff0c;Java经验反而处处接得上手。文章重点探讨了AI产品经理需要关注…

作者头像 李华
网站建设 2026/10/26 10:17:42

前端小白必看:收藏!AI大模型时代如何升级进阶成为高薪程序员

文章指出AI工具已在前端开发中普及&#xff0c;84%开发者使用AI提升效率。市场对前端要求升级&#xff0c;薪资分化明显。建议前端开发者通过深入AI工程化、走向全栈架构或深耕体验性能三个方向转型升级&#xff0c;掌握AI协作、后端能力和用户体验设计&#xff0c;成为不可替代…

作者头像 李华
网站建设 2026/10/26 10:17:37

【C++】搜索二叉树

目录 1. 二叉搜索树的概念 2. 时间复杂度分析 3. 插入&#xff0c;查找&#xff0c;删除的代码实现 删除的代码实现&#xff1a; 4. 二叉搜索树的使用场景 1. key搜索场景 2. key / value搜索场景 5. Insert 和 Find 的递归写法&#xff08;了解&#xff09; 1. 二叉搜…

作者头像 李华
网站建设 2026/10/26 10:14:07

基于机器学习的网络入侵检测系统:从NSL-KDD到实时抓包

简介&#xff1a;面向网络安全与机器学习交叉领域的Python实战项目&#xff0c;以网络入侵检测为核心任务&#xff0c;基于卷积神经网络&#xff08;CNN&#xff09;在NSL-KDD数据集上完成数据预处理、模型构建、训练与预测全流程。项目附带完整源码与项目说明文档&#xff0c;…

作者头像 李华