实现文件的上传功能以及文件上传到服务器

页面前端部分

  1. HTML:创建一个表单,包含一个文件输入框和一个提交按钮。
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>文件上传</title>
    </head>
    <body>
        <form id="uploadForm" enctype="multipart/form-data">
            <input type="file" id="fileInput" name="file">
            <button type="button" onclick="submitForm()">上传</button>
        </form>
        <script src="upload.js"></script>
    </body>
    </html>
    

  2. JavaScript (upload.js):使用FormData对象和fetch API发送文件到服务器。
    function submitForm() {
        const form = document.getElementById('uploadForm');
        const fileInput = document.getElementById('fileInput');
        const file = fileInput.files[0];
    
        if (!file) {
            alert('请选择文件');
            return;
        }
    
        const formData = new FormData();
        formData.append('file', file);
    
        fetch('/upload', {
            method: 'POST',
            body: formData
        })
        .then(response => response.json())
        .then(data => {
            console.log('上传成功', data);
        })
        .catch(error => {
            console.error('上传失败', error);
        });
    }
    

    服务器后端部分

    以Node.js为例,使用express框架和multer中间件处理文件上传。

  3. 安装依赖
    npm init -y
    npm install express multer
    
  4. 创建服务器(server.js)
    const express = require('express');
    const multer = require('multer');
    const app = express();
    const port = 3000;
    
    // 配置multer
    const storage = multer.diskStorage({
        destination: function (req, file, cb) {
            cb(null, 'uploads/');
        },
        filename: function (req, file, cb) {
            cb(null, Date.now() + '-' + file.originalname);
        }
    });
    
    const upload = multer({ storage: storage });
    
    // 创建路由处理文件上传
    app.post('/upload', upload.single('file'), (req, res) => {
        res.json({ message: '上传成功', file: req.file });
    });
    
    app.listen(port, () => {
        console.log(`Server is running at http://localhost:${port}`);
    });
    
  5. 运行服务器
    node server.js
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cheney 胤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值