1小时,带你前端【上传文件】方法汇总,一篇就够了~


上传文件

项目中会有很多文件上传的需求,例如:头像上传、表格文件、word文档等…

上传必备表单元素:

<input type="file">

进行文件上传的时候,⭐⭐
1.表单必须是post请求
2.表单必须声明不要对数据进行编码 - enctype=multipart/form-data

传送数据的格式就是键值对的形式,且数据都是js的数据类型,但文件进行传输的时候,只有两种形式去传输:

  1. 以字符串的形式去描述一个文件
  2. 以文件流的形式去描述一个文件

传统开发模式上传

前后端混在一起开发

传统开发模式的上传需要将表单中选择的文件传送给后端,让后端做上传:

<form action="./upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="avatar">
    <input type="submit" value="上传">
</form>

此时的表单中必须有enctype这个属性,这个属性的说明如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FJ4TCM6S-1623079075591)(media/1621737905322.png)]

点击上传按钮后,后端对文件进行上传处理,以php为例:

echo "上传文件名: " . $_FILES["avatar"]["name"] . "<br>";  上传文件的名称
echo "文件类型: " . $_FILES["avatar"]["type"] . "<br>";  上传文件的类型
echo "文件大小: " . ($_FILES["avatar"]["size"] / 1024) . " kB<br>";  上传文件的大小,以字节计
echo "文件临时存储的位置: " . $_FILES["avatar"]["tmp_name"];  存储在服务器的文件的临时副本的名称
echo $_FILES["file"]["error"]  由文件上传导致的错误代码

将文件保存到服务器中:

move_uploaded_file($_FILES["avatar"]["tmp_name"], "upload/" . $_FILES["avatar"]["name"]);
echo "文件存储在: " . "upload/" . $_FILES["avatar"]["name"];

在实际开发中,为了提高效率,通常都会使用前后端分离开发。

前后端分离上传

前端做前端,后端做后端,最终使用接口文档对接 - 核心技术是 ajax

前后端分离开发,应用的主要技术就是ajax。上传同样可以使用ajax来上传。

FormData是js内置的一个构造函数,构造出来的对象可以识别文件信息。

使用方式:

构造FormData对象,将文件信息添加到FormData对象中,然后上传。

文件信息在文件选择控件中:表单.files

例:⭐⭐

<body>
    <input type="file" name="avatar">
    <input type="button" value="上传">
</body
  • 35
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 78
    评论
评论 78
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪吃ღ大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值