Flutter上傳艰匙、顯示二進(jìn)制圖像的一些事

一. 二進(jìn)制流圖像的顯示

前端圖像的展示,我們最常用的是給定一個圖像地址庇绽,然后它就會自己加載并顯示锡搜,如這樣的代碼:

<img src='圖像地址'/>

這基本是一種數(shù)據(jù)的Get請求,對于像Post之類的請求方式瞧掺,上述方式就不好用了耕餐,這個時候可以列用數(shù)據(jù)流或二進(jìn)制方式處理,在Flutter可以像下面文章處理:

flutter通過dio讀取二進(jìn)制數(shù)據(jù)辟狈,比如通過api接口讀取圖片

但是此文的方法已經(jīng)過期了肠缔,我調(diào)整了一下(里面有額外獲取Headers的代碼夏跷,可去掉)

  ///
  /// 獲取圖片
  static Future getImage(String url) async {
    Dio dio = Dio();
    // 注意:這里使用bytes
    dio.options.responseType = ResponseType.bytes;
    // 如果headers有東西,則添加
    Map<String, dynamic> headers = Map();
    dio.options.headers = headers;
    try {
      Response response = await dio.post(url);
      String codeId = '';
      // 獲取response的headers信息明未,如果業(yè)務(wù)不需要可以去掉
      final List<String> imageCode = response.headers["code-id"];
      if (imageCode != null && imageCode.length > 0) {
        codeId = imageCode[0];
      }
      final Uint8List bytes = consolidateHttpClientResponseBytes(response.data);
      print("獲取圖像成功");
      print(codeId);
      return ImageCodeModel(codeId, bytes);
    } catch (e) {
      print("網(wǎng)絡(luò)錯誤:" + e.toString());
      return await null;
    }
  }

  static consolidateHttpClientResponseBytes(data) {
    // response.contentLength is not trustworthy when GZIP is involved
    // or other cases where an intermediate transformer has been applied
    // to the stream.
    final List<List<int>> chunks = <List<int>>[];
    int contentLength = 0;
    chunks.add(data);
    contentLength += data.length;
    final Uint8List bytes = Uint8List(contentLength);
    int offset = 0;
    for (List<int> chunk in chunks) {
      bytes.setRange(offset, offset + chunk.length, chunk);
      offset += chunk.length;
    }
    return bytes;
  }

二. 圖像的上傳

對于圖像的上傳槽华,網(wǎng)上一些文章是這樣寫的:

  void upload(String url, File file) {
    print(file.path);
    Dio dio = Dio();
    dio.post(url, data: FormData.from({'file': file}))
    ...

這種方式其實對于新版的Flutter和Dio也已經(jīng)不適用了,而是應(yīng)如下方式調(diào)用

  static const TIME_OUT = 60000;
  static const CONTENT_TYPE_JSON = "application/json";
  static const CONTENT_TYPE_FORM = "application/x-www-form-urlencoded";
  ///
  ///上傳文件
  static Future uploadFile(String url, File file) async {
    String path = file.path;
    var fileData = await MultipartFile.fromFile(
      path
    );
    FormData formData = FormData.fromMap({
      "file": fileData,
    });
    Options options = new Options(method: "POST");
    ///超時
    options.receiveTimeout = TIME_OUT;
    Map<String, String> headers = new HashMap();
    headers[Config.tokenName] = SPService.getToken();
    headers[HttpHeaders.contentTypeHeader] = CONTENT_TYPE_FORM;
    headers[HttpHeaders.acceptHeader] = CONTENT_TYPE_JSON;
    options.headers = headers;
    return request(url, formData, options: options);
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末趟妥,一起剝皮案震驚了整個濱河市猫态,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌披摄,老刑警劉巖亲雪,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疚膊,居然都是意外死亡匆光,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門酿联,熙熙樓的掌柜王于貴愁眉苦臉地迎上來终息,“玉大人,你說我怎么就攤上這事贞让≈苷福” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵喳张,是天一觀的道長续镇。 經(jīng)常有香客問我,道長销部,這世上最難降的妖魔是什么摸航? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮舅桩,結(jié)果婚禮上酱虎,老公的妹妹穿的比我還像新娘。我一直安慰自己擂涛,他們只是感情好读串,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撒妈,像睡著了一般恢暖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狰右,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天杰捂,我揣著相機(jī)與錄音,去河邊找鬼棋蚌。 笑死嫁佳,一個胖子當(dāng)著我的面吹牛挨队,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脱拼,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞒瘸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了熄浓?” 一聲冷哼從身側(cè)響起情臭,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赌蔑,沒想到半個月后俯在,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡娃惯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年跷乐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趾浅。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡愕提,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出皿哨,到底是詐尸還是另有隱情浅侨,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布证膨,位于F島的核電站如输,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏央勒。R本人自食惡果不足惜不见,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望崔步。 院中可真熱鬧稳吮,春花似錦、人聲如沸刷晋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眼虱。三九已至,卻和暖如春席纽,著一層夾襖步出監(jiān)牢的瞬間捏悬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工润梯, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留过牙,地道東北人甥厦。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像寇钉,于是被迫代替她去往敵國和親刀疙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容