2017-10-31 8 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