前言  Flutter 文件/图片  上传

使用 Flutter框架   基于 http.dart 网络库  ImagePicker.pickImage 进行的 App开发:

今天开发过程中 需要上传 图片:看了下官方文档竟然没有介绍的!!!

后来 google 搜索到了在这里记录下:

参考了这位大兄弟

这三种方式的选型   需要和你后台上传方式对应上,否则就没办法上传成功!自然就是报 500,我这里选择的是三种

Flutter 基于http 库 上传文件的几种方式:

  • http.MultipartFile

    (String filename, String url) async {var request = http.MultipartRequest('POST', Uri.parse(url));request.files.add(http.MultipartFile('picture',File(filename).readAsBytes().asStream(),File(filename).lengthSync(),filename: filename.split("/").last));var res = await request.send();
    }
  • http.MultipartFile.fromBytes
    (String filename, String url) async {var request = http.MultipartRequest('POST', Uri.parse(url));request.files.add(http.MultipartFile.fromBytes('picture',File(filename).readAsBytesSync(),filename: filename.split("/").last));var res = await request.send();
    }
  • http.MultipartFile.fromPath
    (String filename, String url) async {var request = http.MultipartRequest('POST', Uri.parse(url));request.files.add(await http.MultipartFile.fromPath('picture',filename));var res = await request.send();
    }

代码:

import 'package:http/http.dart' as http;
import 'dart:convert' as convert;Future<ResponseBase> upLoadFiles({required String pathCode, required String filePath}) async {try {AppOverlay().showLoading();Uri url = Uri.https(AppHost.hostFile, 'Images/ImageSingleUpload');http.MultipartRequest request = http.MultipartRequest('POST', url);request.fields['pathCode'] = pathCode;http.MultipartFile multipartFile =await http.MultipartFile.fromPath("image", filePath);request.files.add(multipartFile);http.StreamedResponse response = await request.send();if (response.statusCode == 200) {//这里返回值用到了Stream回调String res = await response.stream.bytesToString();Map<String, dynamic> jsonResponse =convert.jsonDecode(res) as Map<String, dynamic>;ResponseBase _responseBase = ResponseBase(errorCode: jsonResponse['errorCode'],action: jsonResponse['action'],message: jsonResponse['message'],value: jsonResponse['value'],success: jsonResponse['success'],);return _responseBase;} else {return ResponseBase(errorCode: response.statusCode,action: 0,message: '上传文件失败 请稍后再试 ${response.statusCode}',success: false,value: {'error get'},);}} catch (exception) {AppScreen.showToast('上传文件失败 请稍后再试 ${exception.toString()}');return ResponseBase(errorCode: -100,action: 0,message: '网络异常 请稍后再试 -100',success: false,value: {'error get': exception.toString()},);} finally {AppOverlay().hideLoading();}}

Flutter 文件上传 (基于 http.dart)相关推荐

  1. Spring MVC-09循序渐进之文件上传(基于Servlet3.0+内置功能)

    概述 测试 源码 概述 Spring MVC-09循序渐进之文件上传(基于Apache Commons FileUpload) 上篇博文我们说了基于Apache Commons FileUpload的 ...

  2. Spring MVC-09循序渐进之文件上传(基于Servlet3.0+Html5客户端上传文件)

    示例 测试 源码 虽然Servlet3.0+中上传文件,我们在服务端编程即可非常容易,但是用户体验却不是非常友好.单独的一个HTML表单并不能显示进度条,或者显示已经成功上传的文件数量. 不管是Jav ...

  3. Spring MVC-09循序渐进之文件上传(基于Apache Commons FileUpload)

    概述 客户端编程 MultipartFile接口 利用Commons FileUpload上传文件 Domain类 控制器 配置文件 JSP页面 部署及测试 源码 概述 Servlet出现之前,文件上 ...

  4. SpringBoot 文件上传 基于MD5 文件内容校验工具类

    1.业务场景:实现文件上传功能时.我们需要校验上传文件在传输过程中是否被注入脚本或者是被修改,所有采用md5 算法+ 文件内容生成一个识别码,传递给后端,让后端判断文件是否发生修改或变更. impor ...

  5. 7、jQuery插件之uploadify文件上传(基于flash)

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  6. SpringMVC 文件上传及下载

    文件下载 inline 访问资源时如果没有设置响应头Content-Disposition,浏览器默认按照inline进行处理 inline:能显示就显示,不能显示就下载 响应头 只需修改响应头Con ...

  7. springMVC文件上传

    Spring MVC 框架的文件上传基于 commons-fileupload 组件,并在该组件上做了进一步的封装,简化了文件上传的代码实现,取消了不同上传组件上的编程差异. MultipartRes ...

  8. Ajax、JSON数据和文件上传与下载

    JavaWeb 一.Ajax 1.1 概念 1.2 异步与同步 1.3 传统请求与Ajax 1.4 异步的使用场景 1.4 传输数据类型 1.5 Ajax的实现方式 1.5.1 原生的JS实现Ajax ...

  9. Flutter HTTP上传文件使用详解

    Flutter HTTP 上传文件详解 Flutter HTTP上传文件详解 multipart/form-data Flutter Http插件 MultipartRequest使用 Flutter ...

最新文章

  1. [2017.02.23] Java8 函数式编程
  2. r语言 断轴 画图_R语言基础画图/绘图/作图
  3. 全球与中国立式胶体磨市场发展现状调研及前景需求分析报告2022-2027年版
  4. python 执行文件内容_python执行文件
  5. C/C++指针 引用
  6. 模糊滤镜_如何用 PS,为照片增加模糊与动感效果
  7. Visio图标模板库
  8. 模糊图像退化与去模糊的数学模型
  9. 下载速度15MB/s,度盘新版本?
  10. 苹果CMS 改造四合一聚合影视+聚合直播+在线小说+短视频+在线音乐+电视直播
  11. 技术人员的一点产品思维思考
  12. PMP-我是如何两周拿下5A的
  13. 又一批大学生毕业了,献上天津大学校园里的励志标语
  14. 第三章 学习CC3200的ADC
  15. android调用系统相机返回图片模糊
  16. 艺术聚焦:#DRIVE
  17. pandas读取带中文的csv
  18. 利用UE4深度图制作空间开敞度可视化工具
  19. suma服务器 硬盘安装,[Server] HP DL380 G6更新esxi6.0 SATA 硬盘掉线问题
  20. 记录yarn安装全局包,无法使用的问题:‘yo‘ 不是内部或外部命令,也不是可运行的程序或批处理文件

热门文章

  1. AttributeError: Can‘t get attribute ‘SPPF‘
  2. 【SICP练习】98 练习2.73
  3. SAP中看板触发WM转储TO确认自动关联产生MM物料凭证的控制
  4. 信息学奥赛一本通(只记录有一定义意义的题目,有任何疑问可以私信我)
  5. 东呈国际携手东鹏特饮为武汉外卖小哥设立“加油站”
  6. Verilog十大基本功1(流水线设计Pipeline Design)
  7. HTTP post请求content-type设置
  8. JVM之关于GC的扩展知识
  9. python登录邮箱#183;
  10. java dwr写法_DWR 3.0 入门示例教程