详细介绍:使用 Axios 上传图片文件

embedded/2025/2/3 14:13:55/

目录

1. 项目背景和功能概述

2. (index.html完整代码)结构解析

3. JavaScript 部分解析

3.1 事件监听和图片上传

3.2 处理响应和错误

4. 完整流程

5. 总结

6. 适用场景


这篇文章将展示如何通过 Axios 发送 POST 请求来实现图片上传。通过用户选择图片文件后,使用 FormData 构造上传的文件数据,并通过 Axios 将其提交到服务器。服务器返回图片的 URL 后,页面会显示上传的图片。

下面是详细的介绍和完整代码示例。


1. 项目背景和功能概述
  • 功能目的:通过文件选择框,允许用户选择本地图片文件,并将其上传到服务器。上传成功后,返回图片的 URL,页面会自动展示上传的图片。
  • 实现方式:通过 Axios 发送 POST 请求,将图片文件封装在 FormData 对象中,并上传到指定的服务器接口。请求成功后,将返回的图片 URL 用于在页面中显示上传的图片。

2. (index.html完整代码)结构解析
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>图片上传</title></head><body><!-- 文件选择元素 --><input type="file" class="upload"><!-- 图片显示区域 --><img src="" alt="" class="my-img"><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script>document.querySelector('.upload').addEventListener('change', e => {// 获取图片文件const fd = new FormData();fd.append('img', e.target.files[0]);// 提交到服务器axios({url: 'http://hmajax.itheima.net/api/uploadimg',  // 服务器接口method: 'post',data: fd  // 使用 FormData 提交图片文件}).then(result => {// 处理服务器返回的结果console.log(result);  // 打印返回的数据const imgUrl = result.data.data.url;  // 获取图片的 URLdocument.querySelector('.my-img').src = imgUrl;  // 设置图片 URL 显示在页面}).catch(error => {console.error('上传失败:', error);  // 捕获错误并输出错误信息});});</script></body>
</html>

3. JavaScript 部分解析
3.1 事件监听和图片上传
  1. 监听文件选择

    • 使用 document.querySelector('.upload').addEventListener('change', e => { ... }) 来监听文件输入框的变化(即用户选择文件后)。
    • e.target.files[0] 获取用户选择的文件。
  2. 使用 FormData

    • 使用 FormData 对象来封装文件数据。FormData 是一个可以包含文件的特殊数据格式,适用于 multipart/form-data 类型的表单提交。
    • fd.append('img', e.target.files[0]) 将选择的文件附加到 FormData 对象中,键名为 'img'
  3. 发送 Axios 请求

    • 使用 axios() 方法发送 POST 请求,将 FormData 对象作为 data 传递。
    • 请求 URL 为 'http://hmajax.itheima.net/api/uploadimg',假设这是一个可处理图片上传的服务器接口。
3.2 处理响应和错误
  • 成功回调
    • 当上传成功时,axios 会返回一个结果对象,包含图片的 URL(在 result.data.data.url 中)。
    • 将获取到的图片 URL 赋值给 img 标签的 src 属性,从而在页面中展示上传的图片。
  • 错误处理
    • 如果上传失败(如网络问题或服务器错误),catch 语句会捕获错误,并打印错误信息。

4. 完整流程
  1. 用户点击文件选择框并选择图片文件。
  2. JavaScript 会触发文件选择框的 change 事件。
  3. 使用 FormData 封装图片文件,并通过 Axios 发送 POST 请求上传图片。
  4. 服务器返回图片 URL,页面上显示上传的图片。

5. 总结

本示例展示了如何使用 Axios 提交图片文件上传请求。通过结合 FormData 对象和 Axios 请求,我们可以方便地处理文件上传的功能。这种方法不仅适用于图片上传,还可以用于其他类型的文件上传。

  • 优点

    • 简单易用,代码简洁。
    • 支持异步请求,避免页面刷新。
    • 使用 FormData 封装文件,能够正确处理多种文件类型。
  • 注意事项

    • 确保服务器端支持接收 multipart/form-data 类型的数据。
    • 考虑文件类型和大小限制,避免上传非法或过大的文件。

6. 适用场景
  • 文件上传功能:例如用户上传头像、图片分享、文件管理系统等。
  • 图片管理系统:用户上传图片后,可以进行查看、编辑等操作。

通过上面的代码,你可以轻松实现图片上传功能,并且能在页面中动态展示上传的结果。


http://www.ppmy.cn/embedded/159198.html

相关文章

webview_flutter_wkwebview 3.17.0使用指南

文档一 lib\inserted_web_seven\tell_to_ai\my_summary\webview_flutter_wkwebview_3.17.0_guide.txt webview_flutter_wkwebview3.17.0 使用指南 日期&#xff1a;2025年1月26日 一、核心作用 iOS/macOS平台的Flutter WebView实现组件&#xff0c;基于WKWebView提供&#x…

Java设计模式:行为型模式→观察者模式

Java 观察者模式详解 1. 定义 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得当一个对象的状态发生变化时&#xff0c;所有的依赖者&#xff08;观察者&#xff09;都会得到通知并自动更…

深度学习之“线性代数”

线性代数在深度学习中是解决多维数学对象计算问题的核心工具。这些数学对象包括标量、向量、矩阵和张量&#xff0c;借助它们可以高效地对数据进行操作和建模。以下将详细介绍这些数学对象及其在深度学习中的典型用途。 数学对象概述 标量 标量是最简单的数学对象&#xff0…

使用Ollama 在Ubuntu运行deepseek大模型:以DeepSeek-coder为例

DeepSeek大模型这几天冲上热搜啦&#xff01; 咱们来亲身感受下DeepSeek模型的魅力吧&#xff01; 整个操作流程非常简单方便&#xff0c;只需要2步&#xff0c;先安装Ollama&#xff0c;然后执行大模型即可。 安装Ollama 在Ubuntu下安装Ollama非常简单&#xff0c;直接sna…

聚簇索引、哈希索引、覆盖索引、索引分类、最左前缀原则、判断索引使用情况、索引失效条件、优化查询性能

聚簇索引 聚簇索引像一本按目录排版的书&#xff0c;用空间换时间&#xff0c;适合读多写少的场景。设计数据库时&#xff0c;主键的选择&#xff08;如自增ID vs 随机UUID&#xff09;会直接影响聚簇索引的性能。 什么是聚簇索引&#xff1f; 数据即索引&#xff1a;聚簇索引…

Python Lambda函数完全指南:从基础到高阶应用

Python Lambda函数完全指南&#xff1a;从基础到高阶应用 一、Lambda函数核心认知 1.1 什么是Lambda函数&#xff1f; 匿名函数&#xff08;无名函数&#xff09;单行表达式实现函数功能语法&#xff1a;lambda 参数: 表达式即用即弃的轻量级函数工具 1.2 与普通函数对比 …

讯飞智作 AI 配音技术浅析(二):深度学习与神经网络

讯飞智作 AI 配音技术依赖于深度学习与神经网络&#xff0c;特别是 Tacotron、WaveNet 和 Transformer-TTS 模型。这些模型通过复杂的神经网络架构和数学公式&#xff0c;实现了从文本到自然语音的高效转换。 一、Tacotron 模型 Tacotron 是一种端到端的语音合成模型&#xff…

AI软件栈:LLVM分析(一)

文章目录 AI 软件栈后端编译LLVM IRLLVM的相关子项目AI 软件栈后端编译 AI软件栈的后端工作通常与硬件架构直接相关,为了实现一个既能适配现代编程语言、硬件架构发展的目标,所以提出了LLVM具备多阶段优化能力提供基础后端描述,便于进行编译器开发兼容标准编译器的行为LLVM …