2017-10-31 9 views
0

image pickerを使用してギャラリーから画像をキャプチャしたり選択したりするフラッターアプリを構築していますが、その画像をクライアント側からサーバーにPOSTするのは苦労しています。JSONをフラッターで使用して画像を投稿する方法は?

私が集めたものから、画像ファイルをバイトに変換してからBASE64として送信することで、JSON経由でローカル画像を送信できます。

import 'dart:convert'; 
import 'package:crypto/crypto.dart'; 

Future<Map> _avatarSubmit() async { 
    String url = api + '/api/account'; 
    http.Response response = await http.post(Uri.encodeFull(url), headers: { 
     "Accept": "application/json", 
     "Cookie": "MYCOOKIE=" + sessionCookie2 + "; MYTOKENS=" + sessionCookie3, 
     "Content-type": "multipart/form-data", 
    }, body: { 
     "image": "", 
    }); 
    Map content = JSON.decode(response.body); 
    return content; 
    } 

私の質問は、バイトに、デバイスの画像ファイルを変換する方法であるので、私はその後、BASE64に変換するcryptoプラグインを使用することができますか?

ありがとうございます。

答えて

3

image pickerプラグインは画像のfilePathを提供します.dart:ioのFileクラスを使用して画像を読み込み、dart:BASE64からBASE64を使用してBASE64文字列に変換できます。ここで

は、あなたがそれを行うことができる方法である。

import 'dart:io'; 
import 'dart:convert'; 

File imageFile = new File(imageFilePath); 
List<int> imageBytes = imageFile.readAsBytesSync(); 
String base64Image = BASE64.encode(imageBytes); 

ホープ、この助けました!

+0

ありがとうございます。はい、これは行く方法でした。私はimagePath.toString()を必ず使用してください。 – Ems

関連する問題