Flutter中的Image处理方法

前两天使用trae+flutter尝试写一个提交本地图片到后端服务的代码,但是因为对Flutter不熟悉,弄了半天,这里简单记录一下。

  1. 首先在Flutter中可以使用下面的导入变量,用来判断当前环境是不是web还是app
import 'package:flutter/foundation.dart' show kIsWeb;
  1. 因为web浏览器的沙箱环境,所有通过image picker获得的XFile和在app中获得的XFile不太一样,从web获得的XFile其实是一个Blob对象
final XFile? image = await _picker.pickImage(source: ImageSource.gallery);

下面是ai给出的解释。

  1. Web 平台的安全性限制
    浏览器沙箱:
    Web 浏览器运行在一个沙箱环境中,出于安全考虑,浏览器不允许网页直接访问用户的本地文件系统。
    这种限制旨在防止恶意网站未经用户许可访问敏感数据。
    文件上传的特殊处理:
    当用户通过 image_picker 选择文件时,浏览器会将所选文件存储在一个临时区域中。
    为了让 Flutter Web 应用能够访问这些文件,浏览器会生成一个临时的 URL,指向该临时区域中的文件。
    这个url,本质上是浏览器为这个文件创建的一个临时可访问的连接。
  2. 临时 URL 的提供者
    浏览器本身:
    这个临时 URL 是由浏览器本身生成的,而不是由任何外部服务器提供的。
    浏览器充当了一个临时的“文件服务器”,为 Web 应用提供对所选文件的访问权限。
    这个URL的生命周期,通常和当前浏览的页面生命周期一致,当页面关闭,或者浏览器关闭,这个url就会失效。
    Blob 对象:
    在 Web 平台上,文件数据通常以 Blob(Binary Large Object)对象的形式存在。
    浏览器可以使用 URL.createObjectURL() 方法,为 Blob 对象创建一个临时的 URL。
    image_picker 内部很可能就是通过这种方式,将选择的文件,转换成Blob对象,并生成url,提供给flutter web使用。
  1. 然后在提交到后端之前再做一下处理就可以了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值