首页 > 其他分享 >前端如何上传文件给服务器

前端如何上传文件给服务器

时间:2024-04-03 18:23:45浏览次数:29  
标签:编码 文件 二进制 前端 Base64 Blob 服务器 上传

前端如何上传文件给服务器

 

上传文件到服务器常用的方法有两种

第一种:将文件转换成base64编码后使用POST上传给服务器

实现方法

URL.createObjectURL(BlobFile)
//或者由canvas生成
canvas.toDataURL('image/jpeg',0.8)

优点:

  1. 可以将二进制文件转换为文本数据进行传输,避免了二进制文件传输可能遇到的编码问题和字节顺序的差异问题,从而提高了兼容性。

  2. Base64 编码后的文本数据相对于二进制数据而言更容易进行文本处理和解析,比如可以直接将其嵌入到 HTML、CSS 或 JavaScript 中,或者将其作为 URL 参数传递。

  3. 在一些低带宽网络环境下,Base64 编码可以通过减小请求的数据量来减少网络带宽的消耗。

缺点

  1. Base64 编码后的数据比原始二进制文件的大小要大 33% 左右,这意味着对于大文件的传输来说,将其转换为 Base64 编码后可能会消耗更多的网络带宽和服务器资源。

  2. 将文件转换为 Base64 编码后会增加 CPU 和内存的负担,因为 Base64 编码需要进行复杂的编码和解码过程。

  3. 在服务器端处理 Base64 编码的数据时需要进行解码,这会增加服务器的负担和数据处理时间。

第二种:将二进制文件直接上传给服务器

实现方法

如果需要把base64编码的文件转换成二进制文件可以参考:
Base64 编码的字符串转换为 Blob 对象方法

let formData = new FormData();
formData.append("file", file.blob());
formData.append("text", "这是一段文字");

axios({
  method: "post",
  url: "/upload",
  headers: { "Content-Type": "multipart/form-data" },
  data: formData,
}).then((response) => {
  console.log(response.data);
});

优点:

  1. Blob 对象表示不可变、原始数据的类文件对象,它通常用于处理二进制数据或大型数据的传输。使用 Blob 对象上传文件可以直接获取文件的二进制数据,而不需要通过一些额外的库或插件来解析文件内容。

  2. 在使用 Blob 对象上传文件时,可以直接将文件对象作为参数传递给 XMLHttpRequest 或 fetch API,从而实现更加简洁的代码编写方式。

  3. Blob 对象上传文件的速度通常较快,因为它直接使用二进制数据进行传输,避免了其他编码方式可能存在的额外的处理时间和计算开销。

缺点:

  1. 使用 Blob 对象上传文件时需要手动设置 Content-Type 等一些 HTTP 头信息,这可能需要开发者在代码中进行额外的设置。

  2. 在使用 Blob 对象上传文件时,需要对文件进行读取和解析,这可能会增加 CPU 和内存的负担,尤其是在处理大型文件时。

  3. 对于不支持 Blob 对象的浏览器或客户端环境,使用 Blob 对象上传文件可能会存在兼容性问题。

标签:编码,文件,二进制,前端,Base64,Blob,服务器,上传
From: https://www.cnblogs.com/sexintercourse/p/18113301

相关文章

  • cloudflare认识3(Typora结合picgo直接上传图片到CF)
    参考:https://juejin.cn/post/7259668331711152183在上一篇cloudflare认识2(picgo结合使用)  把picgo成功结合CF实现了图床功能后,为了后期用Typora写md方便,这回直接在Typora里面配置了picgo用来直接上传到CF上,具体操作如下按键组合ctrl+,进入设置选择“图像”,配置picgo路径最......
  • cloudflare认识1(上传文件到桶)
    参考:https://fecify.com/doc/cn-1.0/fecify-shop-helper-cloudflare-r2.html#%E4%BA%91%E5%AD%98%E5%82%A8-%E4%BD%BF%E7%94%A8cloudflare-r2https://zhuanlan.zhihu.com/p/658058503下面记录下我认识CF的R2是个啥,首先CF意思是cloudflare是个平台,R2是他的一款产品有点类似于阿里......
  • 电信aep—Ctwing平台使用笔记——mqttfx接入电信aep实现数据上传、命令下发。
    最近搞了电信平台,记录一下目录1.创建产品2.添加设备3.记录以下信息4.打开mqttfx​编辑5.试试​编辑6.建立属性7.建立服务8.打开mqttfx,输入主题与报文9.上传10指令下发1.创建产品2.添加设备3.记录以下信息4.打开mqttfx参数填写规则:1.BrokerAddress:从设......
  • 56.html+css网页设计实例/“家乡”主题上海介绍/web前端期末大作业/
    一、前言  本实例以上海为主题设计,div+css布局,页面简单大气,代码精简,供大家参考。【关注作者|获取更多源码(2000+个Web案例源码)|优质文章】;您的支持是我创作的动力!【点赞收藏博文】,Web开发、课程设计、毕业设计有兴趣的联系我交流分享,3Q!二、网页文件三、网页效果以下......
  • http前端面试题
    http状态码状态码分类1xx服务器收到请求2xx成功3xx重定向4xx客户端错误5xx服务器错误常见状态码http协议中的状态码有很多,但只有一些是我们常用的。也是面试常考的。200成功301永久重定向(同时返回一个location,写明重定向的url)。例如一个网站的网址永久性的切换......
  • 上传苹果IPA安装包的最佳实践:确保成功通过App Store审核
    目录引言摘要第二步:打开appuploader工具第二步:打开appuploader工具,第二步:打开appuploader工具第五步:交付应用程序,在iTunesConnect中查看应用程序总结引言在将应用程序上架到苹果应用商店之前,开发者需要学习如何上传ipa安装包。本文将介绍使用appuploader工具将ipa......
  • 逐步指南:如何正确上传苹果IPA安装包至App Store
    目录引言摘要第二步:打开appuploader工具第二步:打开appuploader工具,第二步:打开appuploader工具第五步:交付应用程序,在iTunesConnect中查看应用程序总结引言在将应用程序上架到苹果应用商店之前,开发者需要学习如何上传ipa安装包。本文将介绍使用appuploader工具将ipa......
  • 前端八股文
    Htmlie盒模型与标准盒模型![[2-1.png]]![[2-2.png]]Csscss伪类selector:link{}selector:visited{}selector:hover{}selector:active{}selector:focus{}Javascriptcookie/sessionStorage/localStorage的区别cookie在同源请求中会携带,在过期时间内一直有效ses......
  • 如何判断JS类型,快速上手前端开发
    注意1.nulltypeofnull//“object”因为历史遗留的原因。typeofnull尝试返回为null失败了,所以要记住,typeofnull返回的是object。2.NaN特殊值NaN返回的是“number”typeofNaN//“number”3复杂数据类型而复杂数据类型里,除了函数返回了"function"其他均返回......
  • 银河麒麟高级服务器操作系统(AMD64版)V10 7
    银河麒麟高级服务器操作系统(AMD64版)V10部署发布.NETframeworkWebFroms项目下载ios镜像麒麟生态官网下载:https://eco.kylinos.cn/找到需要下载的镜像,注意版本,电脑是国产芯片的看一下对应的版本下载,AMD和Intel芯片下载AMD版的或者点击下面地址直接下载https://distro-imag......