zoukankan      html  css  js  c++  java
  • 每日思考(2020/02/23)

    题目概览

    • Form表单是怎么上传文件的
    • 对flex的了解
    • 字符串相连有哪些方式

    题目解答

    Form表单是怎么上传文件的

    • 使用HTML Form上传文件:name属性是与后端约定的文件上传字段

      <form action="http://localhost:3001/api/tools/upload" method="POST" enctype="multipart/form-data">
          <input type="file" name="fileToUpload">
          <button type="submit">Submit</button>
      </form>
      
    • Node.js + express + multer 实现后端文件接收处理

      const express = require('express');
      const router = express.Router();
      const path = require('path')
      const multer = require('multer') // 图片上传模块
      
      var upload = multer({
        dest: path.join(__dirname, '../public/upload/'),
      })// 定义图片上传的临时目录
      router.post('/tools/upload', authLogin, upload.single('fileToUpload'), (req, res, next) => {
          let file = req.file
          // 处理文件
      });
      
    • 原理:就是把文件转化为字节流,然后利用http进行传输,后端接受后再把二进制转化为原先的文件格式。在HTML表单中,可以上传文件的唯一控件就是<input type="file">。当一个表单包含<input type="file">时,表单enctype必须指定为multipart/form-data(表明表单需要上传二进制数据),method必须指定为post,浏览器才能正确编码并以multipart/form-data格式发送表单的数据。multiple="multiple"说明可以同时上传多个文件。也可以使用文件编码传输,可以把图片转化成base64格式然后进行传输,到了服务器之后直接解码base64

    对flex的了解

    • 基本概念:采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效

    • 基础语法:包括设置在容器上的容器属性(6个)以及设置在项目上的项目属性(6个)

      容器属性 用途 默认值 | 其他
      flex-direction 设置主轴方向 row | row-reverse 、column、 column-reverse
      flex-wrap 定义如何换行 nowrap | wrap 、wrap-reverse
      flew-flow flew-directionflew-wrap的简写 row nowrap
      justify-content 设置主轴的对齐方式 flex-start | flow-end、center、space-between、space-around
      align-items 设置交叉轴的对齐方式 stretch | flow-start、flow-end、center、baseline
      align-content 设置多行主轴的对齐方式 stretch | flow-start、flow-end、center、space-between、space-around
      项目属性 用途 默认值 | 其他
      flow-grow 设置放大比例 0 | number
      flow-shrink 设置缩小比例 1 | number
      flow-basis 设置初始大小 auto | length
      flow flow-grow flow-shrinkflow-basis的简写 0 1 auto
      align-self 设置对齐方式 auto | flex-start、flex-end、center、baseline、stretch
      order 设置排序位置 0 | integer(整数)
    • 理解

      • 简单实用

        <div class="box">
            <div></div>
            <div></div>
            <div></div>
        </div>
        
        .box{
             1000px;
            height: 300px;
            margin: 0 auto;
            display: flex;/* 用在父元素上,弹性布局 */
            flex-direction: row;/* 默认row,垂直用column */
        }
        .box div {
            background: rgb(218, 189, 189);
            margin: 1px;
            flex: 1;/* 三个盒子三等分 */
            min-100px;
            max-height: 500px;/* 可用于限制小盒子的宽度和高度范围 */
        }
        .box div:last-child {
            flex: 2;/*分成四份,最后一个盒子2份,剩下两个盒子平均剩下两份  */
        }
        
      • justify-content属性是用来定义项目在主轴上如何对齐,具体对齐方式与轴的方向有关,所以要注意flex-direction定义的主轴方向

      • align-items属性是用来定义项目在交叉轴上如何对齐,具体的对齐方式与交叉轴的方向有关,所以要注意flex-direction定义的主轴方向

      • 要理解flow-grow flow-shrink:flow-grow:用来定义有多余空间时,项目是否放大;flow-shrink用来定义空间不足时,项目是否缩小

      • flex-basis指的是flex items在被放进一个flex容器之前的大小

      • flex-basis属性定义的是在分配多余空间之前,项目占据的主轴空间

      • flow-shrink不可为负值,order可为负值

      • order数值越小,排列越靠前

      • align-self为auto时继承父元素的align-items,若无父元素,则等同于stretch

      • flex属性的快捷值(flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选)

        flex:auto   (=>1 1 auto) 
        flex:none   (=>0 0 auto)
        flex:1      (=>1 1 0%)  flex:2(=>2 1 0%) flex:2 3(=>2 3 0%)
        flex:50%    (=>1 1 50%)
        
      • 相关完整教程:Flex 布局语法教程

    字符串相连有哪些方式

    var a = "aaaa"
    var b = "bbbbb"
    
    // 方法一: “+”
    var c = a + b
    console.log("c:", c)
    
    // 方法二: “join("")”
    var d = []
    d.push(a,b)
    console.log("d:", d.join(""))
    
    // 方法三:模版字符串 `${}`
    var e = `${a}${b}`
    console.log("e:", e)
    
  • 相关阅读:
    Google Code 项目代码托管网站上 Git 版本控制系统使用简明教程
    C/C++预定义宏
    使用 Raspberry Pi 远程桌面
    Vim 中将 tab 自动转换成空格
    DR模式搭建LVS负载均衡
    NAT模式LVS搭建负载均衡集群
    php扩展memached安装
    raw_input与input的区别
    keepalived+lvs搭建高可用负载均衡集群
    使用keepalived搭建nginx高可用
  • 原文地址:https://www.cnblogs.com/EricZLin/p/12355124.html
Copyright © 2011-2022 走看看