Skip to content

[html] 第51天 Form表单是怎么上传文件的?你了解它的原理吗? #198

Open
@haizhilin2013

Description

@haizhilin2013
Collaborator

第51天 Form表单是怎么上传文件的?你了解它的原理吗?

Activity

AnsonZnl

AnsonZnl commented on Jun 6, 2019

@AnsonZnl
Contributor

简单来说就是把文件转化成字节流,然后使用http进行传输,后端接受后在把二进制转化成原先的文件格式。

在HTML表单中,可以上传文件的唯一控件就是<input type="file">
当一个表单包含<input type="file">时,表单的enctype必须指定为multipart/form-data(表明表单需要上传二进制数据),method必须指定为post,浏览器才能正确编码并以multipart/form-data格式发送表单的数据。multiple="multiple"说明可以同时上传多个文件

也可以使用文件编码传输,可以把图片转化成base64格式然后进行传输,到了服务器之后直接解码base64,

查了一会 我发现=我也有点迷糊..

simonliang20

simonliang20 commented on Jun 6, 2019

@simonliang20
censek

censek commented on Nov 20, 2019

@censek

⚠️ 第51天的CSS题目链接的是HTML……

canwdev

canwdev commented on Nov 28, 2019

@canwdev

使用纯 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
    // 处理文件
});
smile-2008

smile-2008 commented on Nov 16, 2020

@smile-2008

简单来说就是把文件转化成字节流,然后使用http进行传输,后端接受后在把二进制转化成原先的文件格式。

在HTML表单中,可以上传文件的唯一控件就是<input type="file">
当一个表单包含<input type="file">时,表单的enctype必须指定为multipart/form-data(表明表单需要上传二进制数据),method必须指定为post,浏览器才能正确编码并以multipart/form-data格式发送表单的数据。multiple="multiple"说明可以同时上传多个文件

也可以使用文件编码传输,可以把图片转化成base64格式然后进行传输,到了服务器之后直接解码base64,

查了一会 我发现=我也有点迷糊..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @smile-2008@haizhilin2013@canwdev@AnsonZnl@censek

        Issue actions

          [html] 第51天 Form表单是怎么上传文件的?你了解它的原理吗? · Issue #198 · haizlin/fe-interview