30、js - 上传头像

先看页面效果:

实现功能:点击上传头像按钮可上传头像

<!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>Document</title>
    <style>
        * {
            margin: 6px;
            padding: 0;
        }

        img {
            width: 200px;
            height: 200px;
            border-radius: 50%;
            background: pink;
            display: block;
            margin: 0 auto;
        }

        div {
            display: flex;
            align-items: center;
            justify-content: center;
        }

        label {
            border: 1px solid #ccc;
            background: #eee;
            border-radius: 4px;
            padding: 6px;
            cursor: pointer;
        }

        input {
            display: none;
        }
    </style>
</head>

<body>
    <img src="" alt="">
    <div>
        <!-- 
            label标签只是起到样式好看的作用,不能完全替代input标签,
             但是点击了label标签就是点击了input标签,因为label标签的for和input标签的id一致。
             但是上传头像的chang事件依然是绑定在input标签上
         -->
        <label for="prew">上传头像</label>
        <input type="file" name="my" id="prew">
    </div>

</body>

</html>
<script src="./axios.min.js"></script>
<script>
    document.querySelector('input').addEventListener('change', e => {

        // 因为后台需要 application/form-data 的内容类型,所以前台需要传FormData给后台
        // 创建FormData对象
        const data = new FormData();
        data.append("avatar", e.target.files[0]);
        data.append("creator", "hello");

        axios({
            url: 'http://hmajax.itheima.net/api/avatar',
            method: 'PUT',
            data
        }).then(res => {
            const avatar = res.data.data.avatar;
            document.querySelector('img').src = avatar;
            // 确保刷新页面头像仍在存在
            localStorage.setItem('avatar', avatar);
        })
    })

    // 刷新页面,重新设置头像
    document.querySelector('img').src = localStorage.getItem('avatar');

</script>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Element Plus和Node.js来实现头像上传,你可以参考以下步骤: 1. 首先,确保你已经安装了Node.js,并创建一个新的项目文件夹。 2. 在项目文件夹中,使用以下命令初始化一个新的Node.js应用程序: ``` npm init ``` 按照提示填写项目信息。 3. 安装所需的依赖包,包括express、multer和cors: ``` npm install express multer cors ``` 4. 创建一个名为`app.js`的文件,并添加以下代码: ```javascript const express = require('express'); const multer = require('multer'); const cors = require('cors'); const path = require('path'); const app = express(); const PORT = 3000; // 设置存储引擎和文件上传路径 const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/'); }, filename: function (req, file, cb) { const extname = path.extname(file.originalname); cb(null, Date.now() + extname); } }); // 创建multer实例 const upload = multer({ storage: storage }); // 设置跨域访问 app.use(cors()); // 设置静态文件夹 app.use(express.static('public')); // 处理上传请求 app.post('/upload', upload.single('avatar'), (req, res) => { if (!req.file) { res.status(400).send('No file uploaded.'); return; } const filePath = req.file.path; res.send(`File uploaded successfully. Path: ${filePath}`); }); // 启动服务器 app.listen(PORT, () => { console.log(`Server is running on http://localhost:${PORT}`); }); ``` 5. 创建一个名为`index.html`的文件,并添加以下代码: ```html <!DOCTYPE html> <html> <head> <title>Avatar Upload</title> <link rel="stylesheet" href="https://unpkg.com/element-plus/lib/theme-chalk/index.css"> </head> <body> <div id="app"> <h1>Avatar Upload</h1> <el-upload action="/upload" method="POST" :show-file-list="false" :on-success="handleSuccess" :before-upload="beforeUpload" > <el-button type="primary">Click to Upload</el-button> </el-upload> </div> <script src="https://unpkg.com/vue@next"></script> <script src="https://unpkg.com/element-plus"></script> <script> const { createApp, ref } = Vue; const { ElUpload, ElButton } = ElementPlus; const app = createApp({ components: { ElUpload, ElButton }, setup() { const handleSuccess = (res) => { console.log(res); // 处理上传成功后的逻辑 }; const beforeUpload = (file) => { // 添加校验逻辑,例如文件类型、大小等 return true; }; return { handleSuccess, beforeUpload }; } }); app.mount('#app'); </script> </body> </html> ``` 6. 创建一个名为`uploads`的文件夹,用于存储上传头像文件。 7. 运行以下命令启动服务器: ``` node app.js ``` 现在,你可以通过访问http://localhost:3000 来打开上传页面,选择一个图片文件并点击上传按钮。上传头像文件将会保存在`uploads`文件夹中。 请注意,这只是一个简单的示例代码,你可能需要根据你的实际需求进行更多的配置和处理。同时,记得在实际项目中引入Element Plus的CSSJavaScript文件,以及处理上传成功后的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值