详细先容:使用 Axios 上传图片文件

打印 上一主题 下一主题

主题 1042|帖子 1042|积分 3126

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目次

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完整代码)布局剖析

  1. <!DOCTYPE html>
  2. <html lang="en">
  3.   <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>图片上传</title>
  8.   </head>
  9.   <body>
  10.     <!-- 文件选择元素 -->
  11.     <input type="file" class="upload">
  12.     <!-- 图片显示区域 -->
  13.     <img src="" alt="" class="my-img">
  14.     <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  15.     <script>
  16.       document.querySelector('.upload').addEventListener('change', e => {
  17.         // 获取图片文件
  18.         const fd = new FormData();
  19.         fd.append('img', e.target.files[0]);
  20.         // 提交到服务器
  21.         axios({
  22.           url: 'http://hmajax.itheima.net/api/uploadimg',  // 服务器接口
  23.           method: 'post',
  24.           data: fd  // 使用 FormData 提交图片文件
  25.         }).then(result => {
  26.           // 处理服务器返回的结果
  27.           console.log(result);  // 打印返回的数据
  28.           const imgUrl = result.data.data.url;  // 获取图片的 URL
  29.           document.querySelector('.my-img').src = imgUrl;  // 设置图片 URL 显示在页面
  30.         }).catch(error => {
  31.           console.error('上传失败:', error);  // 捕获错误并输出错误信息
  32.         });
  33.       });
  34.     </script>
  35.   </body>
  36. </html>
复制代码

3. JavaScript 部分剖析

3.1 变乱监听和图片上传


  • 监听文件选择

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

  • 使用 FormData

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

  • 发送 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. 完整流程


  • 用户点击文件选择框并选择图片文件。
  • JavaScript 会触发文件选择框的 change 变乱。
  • 使用 FormData 封装图片文件,并通过 Axios 发送 POST 哀求上传图片。
  • 服务器返回图片 URL,页面上表现上传的图片。

5. 总结

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


  • 优点

    • 简单易用,代码简洁。
    • 支持异步哀求,避免页面革新。
    • 使用 FormData 封装文件,能够准确处理多种文件范例。

  • 注意事项

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


6. 适用场景



  • 文件上传功能:例如用户上传头像、图片分享、文件管理体系等。
  • 图片管理体系:用户上传图片后,可以举行查看、编辑等操纵。
通过上面的代码,你可以轻松实现图片上传功能,而且能在页面中动态展示上传的结果。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表