返回

Vue + Axios + Express 图片上传并利用 JS-XLSX 插件导出图片链接到 Excel

前端

引言

在现代网络应用中,图片上传是一个常见的功能。例如,在社交媒体应用中,用户可以上传头像、分享照片或视频;在电子商务应用中,用户可以上传产品图片;在内容管理系统中,用户可以上传文章配图等等。

为了实现图片上传功能,我们可以使用各种技术和工具。在本文中,我们将使用 Vue.js、Axios 和 Express.js 来构建一个简单的图片上传应用。我们还将使用 JS-XLSX 插件将上传的图片链接导出到 Excel 文件中。

项目搭建

首先,我们需要创建一个新的 Vue.js 项目。我们可以使用 Vue CLI 来快速创建一个项目。

vue create vue-image-upload

接下来,我们需要安装 Axios 和 Express.js。

npm install axios express

然后,我们需要创建一个新的 Express.js 应用。

mkdir server
cd server
npm init -y
npm install express

server 目录下,创建一个 index.js 文件,并写入以下代码:

const express = require('express');
const app = express();

app.use(express.static('public'));

app.post('/upload', (req, res) => {
  // 处理图片上传请求
});

app.listen(3000);

public 目录下,创建一个 index.html 文件,并写入以下代码:

<!DOCTYPE html>
<html>
  <head>
    
    <script src="https://unpkg.com/vue@3"></script>
    <script src="https://unpkg.com/axios@1"></script>
  </head>
  <body>
    <div id="app">
      <h1>Vue Image Upload</h1>
      <input type="file" id="image-input" @change="handleImageUpload">
      <button type="button" @click="exportImagesToExcel">Export Images to Excel</button>
    </div>

    <script>
      const app = Vue.createApp({
        data() {
          return {
            images: []
          }
        },
        methods: {
          handleImageUpload(event) {
            const files = event.target.files;
            for (let i = 0; i < files.length; i++) {
              const file = files[i];

              // 创建一个 FormData 对象
              const formData = new FormData();

              // 将文件添加到 FormData 对象中
              formData.append('image', file);

              // 发送 POST 请求上传图片
              axios.post('/upload', formData)
                .then((response) => {
                  // 将上传的图片链接添加到 images 数组中
                  this.images.push(response.data.url);
                })
                .catch((error) => {
                  console.error(error);
                });
            }
          },
          exportImagesToExcel() {
            // 使用 JS-XLSX 插件将 images 数组中的图片链接导出到 Excel 文件中
            const wb = XLSX.utils.book_new();
            const ws = XLSX.utils.json_to_sheet(this.images);
            XLSX.utils.book_append_sheet(wb, ws, 'Images');
            XLSX.writeFile(wb, 'images.xlsx');
          }
        }
      });

      app.mount('#app');
    </script>
  </body>
</html>

运行项目

现在,我们可以启动项目了。

cd vue-image-upload
npm run serve

然后,访问 http://localhost:8080,您应该会看到一个简单的图片上传页面。

上传图片

要上传图片,只需点击页面上的「浏览」按钮,选择要上传的图片,然后点击「上传」按钮即可。

导出图片链接到 Excel

上传图片后,您可以点击「导出图片链接到 Excel」按钮将上传的图片链接导出到 Excel 文件中。

总结

在本文中,我们学习了如何使用 Vue.js、Axios 和 Express.js 实现图片上传功能,并利用 JS-XLSX 插件将上传的图片链接导出到 Excel 文件中。这是一个简单的项目,但它可以帮助您理解如何在项目中使用这些技术。