Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
haizhilin2013 opened this issue Jun 5, 2019 · 5 comments
Labels
html html

Comments

@haizhilin2013
Copy link
Collaborator

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

@haizhilin2013 haizhilin2013 added the html html label Jun 5, 2019
@AnsonZnl
Copy link
Contributor

AnsonZnl commented Jun 6, 2019

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

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

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

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

@simonliang20
Copy link

原理
文件上传

@censek
Copy link

censek commented Nov 20, 2019

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

@canwdev
Copy link

canwdev commented Nov 28, 2019

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

@MrZ2019
Copy link

MrZ2019 commented Nov 16, 2020

简单来说就是把文件转化成字节流,然后使用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
Labels
html html
Projects
None yet
Development

No branches or pull requests

6 participants