前端上传基础

简介: 只是上传流程,

1.前言


只是上传流程,


2.前端上传准备


html


<label>上传:</label>
    <!-- accept 可选择的文件类型 -->
    <!-- multiple  多个  可以选择多个文件 -->
    <input type="file" style="display: none;" id="input" multiple accept="image/gif,image/jpeg">
    <button id="btn">上传</button>


js


btn.onclick = function () {
            input.click();
        }
        input.onchange = function (e) {
            // 获取所选择的文件 
            // 
            console.log(e.target.files);
            let file = e.target.files[0];
            console.log(file);
            // 获取所有选中文件的容量
            let total = 0;
            for(let i = 0;i < e.target.files.length;i++){
                let file = e.target.files[i];
                console.log(file.name);
                console.log(file.size);
                total += file.size;
            }
            console.log(total);
        }



3.前端上传-node后台处理逻辑分析


前端


<input type="file">
        <button>上传</button>
        <div id="show"></div>
    <script src="./jquery.min.js"></script>
js


$("button").click(function () {
            // 获取上传的数据  
            let file = $("input")[0].files[0];
            // 设置请求参数
            // serialize 其不支持二进制数据传输,因此无法上传文件
            let formData = new FormData();
            formData.append("fileInfo",file);
            // 
            $.ajax({
                type: "POST",
                url: "http://localhost:3000/myupload",
                data: formData,
                processData:false,//默认情况下,processData 的值是 true,其代表以对象的形式上传的数据都会被转换为字符串的形式上传。而当上传文件的时候,则不需要把其转换为字符串,因此要改成false
                contentType:false,//其代表的是 前端发送数据的格式  默认值:
               success: function (response) {
                    console.log(response);// 请求成功
                    // alert("成功")
                    // 成功后修改 样式
                    $("#show").css({
                        // 注意路径问题!!!!!
                        backgroundImage:`url(/uploads/${response.path})`,
                        backgroundSize:"100% 100%",
                    })
                }
            });   
        })


服务端

使用了  multer上传插件


var express = require('express');
ar router = express.Router();
var multer  = require('multer');
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, __dirname+'/uploads/')
  },
  filename: function (req, file, cb) {
  var arr = file.originalname.split('.');
  var fileExt = arr[arr.length - 1];
    cb(null, file.fieldname + '-' + Date.now() + '.' + fileExt)
  }
})
var upload = multer({ storage: storage })
 router.post('/myupload', upload.single('fileInfo'), function (req, res) {
//  console.log("upload---",req);
  var fileName = req.file.filename;
  var arr = req.file.originalname.split('.');
  var fileExt = arr[arr.length - 1];
  var path = `${fileName}.${fileExt}`;
  res.json({
    code: 200,
    message: "上传成功",
    path: fileName
  })
})




相关文章
|
前端开发 JavaScript 安全
微前端之IceStark介绍和基础使用
微前端之IceStark介绍和基础使用
1362 1
|
移动开发 JSON 前端开发
前端H5选图预览到上传
在金融性质的App里,选择本地相册图片或者拍照,然后预览并且上传是一个典型的使用场景,比如常见的身份证信息上传。在最近接触的几家银行客户里,都反馈有类似的场景,并且在使用上都或多或少的遇到一些问题,最后找到我们,希望我们提供一些最佳实践。在这里分享下对应场景的一些优化解决方案。
584 0
前端H5选图预览到上传
|
编解码 前端开发 数据处理
前端基础向--从项目入手封装公共组件
前端基础向--从项目入手封装公共组件
438 0
|
Web App开发 存储 JavaScript
开启前端全栈之路—— node 基础
能够和后端程序员更加紧密的配合。 网站业务逻辑前置,学习前端技术需要后端技术支撑(Ajax)。 扩展知识视野,能够站在更高的角度审视整个项目。
236 0
开启前端全栈之路—— node 基础
|
域名解析 网络协议 前端开发
[前端必知 ]HTTP or TCP/IP 基础
[前端必知 ]HTTP or TCP/IP 基础
204 0
|
域名解析 缓存 网络协议
前端基础的几个概念
《基础系列》
215 0
|
前端开发 JavaScript API
讲师管理-上传讲师头像(前端实现) | 学习笔记
快速学习讲师管理-上传讲师头像(前端实现)
讲师管理-上传讲师头像(前端实现) | 学习笔记
|
前端开发 JavaScript Java
课程管理-添加课程信息前端完善(封面上传) | 学习笔记
简介:快速学习课程管理-添加课程信息前端完善(封面上传)
248 0
课程管理-添加课程信息前端完善(封面上传) | 学习笔记
|
缓存 前端开发 数据可视化
前端基础向--空表格处理与分页调整,优化用户体验
前端基础向--空表格处理与分页调整,优化用户体验
296 0
|
前端开发 算法 数据处理
前端基础向~从项目出手封装工具函数
前端基础向~从项目出手封装工具函数
302 0

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
  • 2
    前端工程化演进之路:从手工作坊到AI驱动的智能化开发
  • 3
    Vue 3 + TypeScript 现代前端开发最佳实践(2025版指南)
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
  • 6
    实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距