Flutter 文件上传 (基于 http.dart)
前言 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)相关推荐
- Spring MVC-09循序渐进之文件上传(基于Servlet3.0+内置功能)
概述 测试 源码 概述 Spring MVC-09循序渐进之文件上传(基于Apache Commons FileUpload) 上篇博文我们说了基于Apache Commons FileUpload的 ...
- Spring MVC-09循序渐进之文件上传(基于Servlet3.0+Html5客户端上传文件)
示例 测试 源码 虽然Servlet3.0+中上传文件,我们在服务端编程即可非常容易,但是用户体验却不是非常友好.单独的一个HTML表单并不能显示进度条,或者显示已经成功上传的文件数量. 不管是Jav ...
- Spring MVC-09循序渐进之文件上传(基于Apache Commons FileUpload)
概述 客户端编程 MultipartFile接口 利用Commons FileUpload上传文件 Domain类 控制器 配置文件 JSP页面 部署及测试 源码 概述 Servlet出现之前,文件上 ...
- SpringBoot 文件上传 基于MD5 文件内容校验工具类
1.业务场景:实现文件上传功能时.我们需要校验上传文件在传输过程中是否被注入脚本或者是被修改,所有采用md5 算法+ 文件内容生成一个识别码,传递给后端,让后端判断文件是否发生修改或变更. impor ...
- 7、jQuery插件之uploadify文件上传(基于flash)
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- SpringMVC 文件上传及下载
文件下载 inline 访问资源时如果没有设置响应头Content-Disposition,浏览器默认按照inline进行处理 inline:能显示就显示,不能显示就下载 响应头 只需修改响应头Con ...
- springMVC文件上传
Spring MVC 框架的文件上传基于 commons-fileupload 组件,并在该组件上做了进一步的封装,简化了文件上传的代码实现,取消了不同上传组件上的编程差异. MultipartRes ...
- Ajax、JSON数据和文件上传与下载
JavaWeb 一.Ajax 1.1 概念 1.2 异步与同步 1.3 传统请求与Ajax 1.4 异步的使用场景 1.4 传输数据类型 1.5 Ajax的实现方式 1.5.1 原生的JS实现Ajax ...
- Flutter HTTP上传文件使用详解
Flutter HTTP 上传文件详解 Flutter HTTP上传文件详解 multipart/form-data Flutter Http插件 MultipartRequest使用 Flutter ...
最新文章
- [2017.02.23] Java8 函数式编程
- r语言 断轴 画图_R语言基础画图/绘图/作图
- 全球与中国立式胶体磨市场发展现状调研及前景需求分析报告2022-2027年版
- python 执行文件内容_python执行文件
- C/C++指针 引用
- 模糊滤镜_如何用 PS,为照片增加模糊与动感效果
- Visio图标模板库
- 模糊图像退化与去模糊的数学模型
- 下载速度15MB/s,度盘新版本?
- 苹果CMS 改造四合一聚合影视+聚合直播+在线小说+短视频+在线音乐+电视直播
- 技术人员的一点产品思维思考
- PMP-我是如何两周拿下5A的
- 又一批大学生毕业了,献上天津大学校园里的励志标语
- 第三章 学习CC3200的ADC
- android调用系统相机返回图片模糊
- 艺术聚焦:#DRIVE
- pandas读取带中文的csv
- 利用UE4深度图制作空间开敞度可视化工具
- suma服务器 硬盘安装,[Server] HP DL380 G6更新esxi6.0 SATA 硬盘掉线问题
- 记录yarn安装全局包,无法使用的问题:‘yo‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
热门文章
- AttributeError: Can‘t get attribute ‘SPPF‘
- 【SICP练习】98 练习2.73
- SAP中看板触发WM转储TO确认自动关联产生MM物料凭证的控制
- 信息学奥赛一本通(只记录有一定义意义的题目,有任何疑问可以私信我)
- 东呈国际携手东鹏特饮为武汉外卖小哥设立“加油站”
- Verilog十大基本功1(流水线设计Pipeline Design)
- HTTP post请求content-type设置
- JVM之关于GC的扩展知识
- python登录邮箱#183;
- java dwr写法_DWR 3.0 入门示例教程