当前位置: 首页 > news >正文

前端如何实现本地图片上传?

前端如何实现本地图片上传?

摘要

对于学习前端的小伙伴都有一个困惑,就是平常想上手小项目,但碍于不想购买服务器,实践受到了限制。
一般我选择node.js搭建服务器,毕竟基于JavaScript语言,简直不是一家人不进一家门。
但是,刚学node.js只会链接数据库进行增删改查,图片上传简直就是渣渣……
现在,我的思路是这样的,在没有云服务器的情况下,利用node.js搭建本地服务器,将图片放在项目项目目录下,名字最好排序,方便前端项目遍历……

前端页面设计和代码实现

在前端页面中需要包含一个表单,用于用户上传图片。表单中需要设置 enctype 属性为 “multipart/form-data”,这样才能上传二进制文件(图片)

<!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></head><body><form action="http://127.0.0.1:3000/upload" method="post" enctype="multipart/form-data" target="_parent"><input type="file" name="image" /><input type="submit" value="上传" /></form></body>
</html>

后端服务器代码实现

安装模块

1. npm init -y2. npm i express multer -S

在后端服务器中,需要使用 Node.js 的 express 框架来创建路由。具体的实现方式如下:

const express = require('express')
const multer = require('multer')
const app = express()
let index = 0
//设置存储路径和文件名
const storage = multer.diskStorage({destination: function (req, file, cb) {cb(null, './uploads')},filename: function (req, file, cb) {index += 1cb(null, index + '.png')}
})const upload = multer({ storage: storage })app.post('/upload', upload.single('image'), function (req, res, next) {const file = req.fileif (!file) {const error = new Error('请上传图片')error.httpStatusCode = 400return next(error)}res.send({ msg: '上传成功' })
})app.listen(3000, function () {console.log('服务器已经启动')
})

在上述代码中,使用了 multer 中间件来处理图片上传。具体实现步骤如下:

  1. 设置存储路径和文件名;
  2. 初始化上传配置对象;
  3. 创建一个路由用于处理文件上传; 启动服务器,监听 3000 端口。

封装组件

<template><div><input type="file" @change="handleUpload"><button @click="uploadImage">上传</button></div>
</template><script>
export default {name: "ImageUploader",data() {return {file: null,imageUrl: "",};},methods: {handleUpload(event) {this.file = event.target.files[0];},uploadImage() {const formData = new FormData();formData.append("image", this.file);// 发送上传请求axios.post("/upload", formData).then((res) => {this.imageUrl = res.data.imageUrl;});},},
};
</script>

这个组件包含一个文件选择框和一个上传按钮,用户可以通过选择文件来上传图片。当用户点击上传按钮时,会将图片通过 axios 库发送给后端 /upload 接口进行处理,然后将图片链接赋值给 imageUrl 变量,以便在页面上显示上传的图片。请注意,这只是一个简单的示例,实际上还需要对上传的图片进行一些检查和处理,例如检查文件大小、类型和命名等。

http://www.lryc.cn/news/16436.html

相关文章:

  • 【基础算法】差分的应用(一维差分和二维差分)
  • 第49章 API统一集中管理
  • carla0.9.13-UE4添加4轮车模型(Linux系统)
  • 对比yolov4和yolov3
  • Android ServiceManager
  • 数据挖掘,计算机网络、操作系统刷题笔记53
  • 地球板块运动vr交互模拟体验教学提高学生的学习兴趣
  • 【Android玩机】跟大家聊聊面具Magisk的使用(安装、隐藏)
  • DACS: Domain Adaptation via Cross-domain Mixed Sampling 学习笔记
  • python并发编程(并发与并行,同步和异步,阻塞与非阻塞)
  • 【项目】DTO、VO以及PO之间的关系和区别
  • Nginx介绍
  • 你什么档次?敢和我用一样的即时通讯平台WorkPlus?
  • 学习资源 - 深度学习
  • C语言数据结构初阶(1)----时空复杂度
  • vscode SSH 保存密码自动登录服务器
  • VR全景多种玩法打破传统宣传,打造全新云端视界
  • Git 教程
  • 一种全新的图像滤波理论的实验(二)
  • Boost库文档搜索引擎
  • Linux中安装JDK
  • 宝塔面板公网ip非80端口非443端口部署ssl
  • 手撕八大排序(上)
  • clickhouse 怎么统计每天0点到10点的某个字段的数据量
  • [qiankun]-图片加载问题
  • 关于upstream的八种回调方法
  • 0303泰勒公式-微分中值定理与导数的应用
  • 日常运维基础命令
  • 人员行为识别系统 TensorFlow
  • ES-倒排索引BKD原理skiplist