flutter 用PUT的方式传输文件不带分隔符

        最近有个需求,需要在flutter中用put的方式传输固件到设备上,本来以为用dio或者http这两个框架就能轻松完成的,结果发现,这两个框架传输过去的文件都会修改了源文件,把请求头的分隔符也带进去了,设备无法识别就升级不了。

        图如下:

                                        (这个是使用dio传输的,错误文件)

                                                (这个是源文件)

        通过对比,发现用dio和http传输的文件都会把头部也写入源文件下,这样就会导致设备无法识别,我查阅了官网和源码,也无法分析出到底是哪里导致此问题的发生,如果有知道的小伙伴可以通过下方评论告知我。

        现在我们说一下解决方案,我这个解决方案不是最终解决方案,只是替代,临时解决,方法如下:

        我们使用flutter最基础的网络框架clienthttp来实现我们的文件传输就没有该问题了,代码如下:

        

 try{
      String fileNames = "您要传输的文件名";
      String urlPath = "您要传输的URL";

      HttpClient httpClient = new HttpClient();
      HttpClientRequest requests = await httpClient.putUrl(Uri.parse(urlPath));

      requests.add(file.readAsBytesSync());

      final response = await requests.close();
      print('Response status: ${response.statusCode}');
      await response.transform(utf8.decoder).forEach(print);
      httpClient.close();


      if (response.statusCode == 200) {
         Fluttertoast.showToast(msg: "升级成功");
      } else {
        
         Fluttertoast.showToast(msg: "升级失败");
      }
   

    } catch (e) {
      print('downloadFile error---------$e');
    }

        使用上面的代码后,我们会发现,传输到固件的文件就不会带有分隔符,这样设备就能正常识别并且升级,我对比后猜测是dio和http这两个框架在底层默认使用了表单这种方式去传输文件,所以表单才会把头部也写入了文件中,而且它们是针对服务器的,服务器能好好的识别这些信息然后剔除掉,但是我们用来传输给设备,设备不做这种识别就会出现上面的问题。也不知道猜测是否准确,有知道的大佬可以评论下留言交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906312.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Javaweb 实验4 xml

我发现了有些人喜欢静静看博客不聊天呐, 但是ta会点赞。 这样的人呢帅气低调有内涵, 美丽大方很优雅。 说的就是你, 不用再怀疑哦 实验四 XML 目的: 安装和使用XML的开发环境认识XML的不同类型掌握XML文档的基本语法了解D…

基于SSM+VUE历史车轮网站JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

【果实种子识别】Python+深度学习+人工智能+CNN卷积神经网络算法+TensorFlow+算法模型训练

一、介绍 果实种子识别系统,使用Python语言进行开发,通过TensorFlow搭建卷积神经网络算法模型,对10种坚果果实(‘杏仁’, ‘巴西坚果’, ‘腰果’, ‘椰子’, ‘榛子’, ‘夏威夷果’, ‘山核桃’, ‘松子’, ‘开心果’, ‘核桃…

云服务器哪家好?(跨境电商云服务器推荐)

跨境电商的发展势头愈发迅猛,对云服务器的需求也在与日俱增。挑选一个合适的云服务器,能够为跨境电商提供稳定的运行环境,确保网站具备快速响应能力,提升用户体验,进而增强商业竞争力。 以下是一些比较好的云服务器提供…

CentOS 文件系统扩容与缩容

一、 概述 理解Linux文件系统的管理,需要了解以下的一张图: 一般使用LVM (Logical Volume Manager) 管理磁盘存储,该工具允许用户更灵活地分配和管理存储空间。主要有以下几个概念: PV(Physical Volume,物…

分布式事务(2)----AT模式脏写问题

1.AT模式的脏写问题 我们先回顾一下AT模式的流程,AT模式也分为两个阶段: 第一阶段是记录数据快照,执行并提交事务: 第二阶段根据阶段一的结果来判断: 如果每一个分支事务都成功,则事务已经结束&#xff…

利用AWS服务轻松迁移数据上云

在数字化转型的浪潮中,越来越多的企业意识到将数据迁移至云端的重要性。云服务不仅能够提供更高的灵活性和可扩展性,还能显著降低IT成本。AWS(Amazon Web Services)作为全球领先的云服务提供商,为企业提供了一系列高效…

web——upload1——攻防世界

第一次做木马题目,有点懵逼,浮现一下做题思路 可以上传一个文件,通过学习学习到了一句话木马 一句话木马: 利用文件上传漏洞,往目标网站中上传一句话木马,然后你就可以在本地通过中国菜刀chopper.exe即可…

二百七十二、Kettle——ClickHouse中增量导入数据重复性统计表数据(1天1次)

一、目的 在数据质量模块,需要对原始数据的重复性进行统计 Hive中原有SQL语句和ClickHouse现有SQL语句很大不同 二、Hive中原有代码 2.1 表结构 --41、八大类基础数据重复性统计表 事件事件资源不需要重复 create table if not exists hurys_db.dwd_data_d…

Python学习的自我理解和想法(22)

学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码! 今天是学Python的第22天,学的内容是正则表达式,明天会出一篇详细实例介绍。电脑刚修好!开学了,时间不多&…

Uniapp 实现app自动检测更新/自动更新功能

实现步骤 配置 manifest.json 在 manifest.json 中设置应用的基本信息,包括 versionName 和 versionCode。 一般默认0.0.1,1. 服务器端接口开发 提供一个 API 接口,返回应用的最新版本信息,版本号、下载链接。客户端检测更新 使…

Weblogic漏洞复现(Vulhub)

0x00前言 docker 安装 Docker的安装_docker安装-CSDN博客 docker的镜像 1.可以在阿里云上的容器服务找到镜像源。 2.也可以使用下面的镜像源,时快时慢不稳定。 {"registry-mirrors":["https://docker.registry.cyou","https://docke…

Nico,从零开始干掉Appium,移动端自动化测试框架实现

开头先让我碎碎念一波~去年差不多时间发布了一篇《 UiAutomator Nico,一个基于纯 adb 命令实现的安卓自动化测试框》(https://testerhome.com/topics/37042), 由于种种原因 (详见此篇帖子) 当时选择了用纯 adb 命令来实现安卓自动…

音视频入门基础:FLV专题(22)——FFmpeg源码中,获取FLV文件音频信息的实现(中)

本文接着《音视频入门基础:FLV专题(21)——FFmpeg源码中,获取FLV文件音频信息的实现(上)》,继续讲解FFmpeg获取FLV文件的音频信息到底是从哪个地方获取的。本文的一级标题从“四”开始。 四、音…

scala 权限

一.访问权限 idea实例 关于protected:

flex 布局比较容易犯的错误 出现边界超出的预想的情况

flex 布局比较容易犯的错误 出现边界超出的预想的情况 如图 当使用flex布局时,设置flex:1 或者是flex:x 时 如果没有多层嵌套的flex布局,内容超出flex:1规定的后,仍然会撑大融器 在flex:1 处设置 overflow:hidden 即可超出后不显…

【vue项目中添加告警音频提示音】

一、前提: 由于浏览器限制不能自动触发音频文件播放,所以实现此类功能时,需要添加触发事件,举例如下: 1、页面添加打开告警声音开关按钮 2、首次进入页面时添加交互弹窗提示:是否允许播放音频 以上两种方…

Java 用户随机选择导入ZIP文件,解压内部word模板并入库,Windows/可视化Linux系统某麒麟国防系统...均可适配

1.效果 压缩包内部文件 2.依赖 <!--支持Zip--><dependency><groupId>net.lingala.zip4j</groupId><artifactId>zip4j</artifactId><version>2.11.5</version></dependency>总之是要File类变MultipartFile类型的 好像是…

反悔贪心

Problem - C - Codeforces&#xff08;初识反悔贪心&#xff09; 题目&#xff1a; 思路&#xff1a; 代码&#xff1a; #include <bits/stdc.h> #define fi first #define se secondusing namespace std; typedef pair<int,int> PII;string a, b, ans; bool vis…

Cisco Packet Tracer 8.0 路由器静态路由配置

文章目录 静态路由简介一、定义与特点二、配置与命令三、优点与缺点四、应用场景 一&#xff0c;搭建拓扑图二&#xff0c;配置pc IP地址三&#xff0c;pc0 ping pc1 timeout四&#xff0c;配置路由器Router0五&#xff0c;配置路由器Router1六&#xff0c;测试 静态路由简介 …