博客
关于我
Node+express框架图片上传
阅读量:771 次
发布时间:2019-03-24

本文共 1478 字,大约阅读时间需要 4 分钟。

上传功能开发实录

1. 创建表单提交 upload.html 文件

我们需要为用户创建一个简单的图片上传表单,用户可以通过该表单上传个人头像。创建一个 upload.html 文件,内容如下:

    用户头像上传    

用户头像上传

上传头像:

2. 创建处理文件 upload.js

我们需要创建一个 upload.js 文件,作为服务器端的处理逻辑。以下是实现步骤:

1.1 引入必要的库

使用以下外部库来处理文件上传和路由:

const express = require('express');const bodyParser = require('body-parser');const formidable = require('formidable');const fs = require('fs');const path = require('path');

1.2 初始化服务器和中间件

const app = express();app.use(bodyParser.urlencoded({ extended: false }));

1.3 配置静态资源和路由

app.use(express.static(path.join(__dirname, 'upload')));// 定义路由app.get('/', (req, res) => {    res.sendFile(path.join(__dirname, 'upload.html'));});app.post('/upload', (req, res) => {    // 处理文件上传    const form = new formidable.IncomingForm();    form.parse(req, (err, fields, files) => {        // 读取上传的文件        const readStream = fs.createReadStream(files.userImg.path);                // 写入文件        const writeStream = fs.createWriteStream(            path.join(__dirname, 'upload', files.userImg.name)        );        readStream.pipe(writeStream);                // 处理上传完成后的回应        res.send(`图片已上传至 ${files.userImg.name}`);    });});

1.4 启动服务器

app.listen(3000, () => {    console.log('服务器运行中,访问地址为 http://localhost:3000');});

这样,用户可以通过浏览器访问 http://localhost:3000 进行头像上传。上传完成后,图片会被保存在 upload 目录下。

注意事项

  • filefields 的处理需要谨慎操作
  • 确保服务器端有权限写入目标目录
  • 可以在上传完成后返回图片的路径或页面跳转
  • 建议配置 funculiar 中间件进行图片处理和文件类型验证
  • 这个实现方案简单明了,适合用于图片头像上传场景,同时兼容大部分主流的浏览器。

    转载地址:http://yyokk.baihongyu.com/

    你可能感兴趣的文章
    python 列表转字典方法
    查看>>
    Python 列表(List)概述-ChatGPT4o作答
    查看>>
    Python网络爬虫基础进阶到实战教程
    查看>>
    Python 初学者需要知道的四条建议
    查看>>
    Python 判断字符串是否包含子字符串
    查看>>
    python 判断当前时间是否为零点
    查看>>
    python 利用pandas读取本地中CSV文件的指定列 列名重命名 并保存回本地
    查看>>
    python 利用pyspark读取HDFS中CSV文件的指定列 列名重命名 并保存回HDFS
    查看>>
    python 利用pyttsx3文字转语音
    查看>>
    python 利用已有Ner模型进行数据清洗合并
    查看>>
    python 到大数据开发工程师_如何成为一个大数据开发工程师?
    查看>>
    python 加密解密(base64, AES)
    查看>>
    Python 包管理器和 Node.js
    查看>>
    Python 单词字母顺序不变且所有倒排
    查看>>
    python 反射机制
    查看>>
    python 启动提示IDLE's subprocess didn't make conne...
    查看>>
    python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
    查看>>
    Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
    查看>>
    Python 和 RabbitMQ - 聆听来自多个渠道的消费事件的最佳方式?
    查看>>
    python编辑器打不开_关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路...
    查看>>