前端上传基础

简介: 只是上传流程,

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
  })
})




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