簡體   English   中英

將 object 轉換為可編碼的 object 失敗:“_File”實例 Flutter

[英]Converting object to an encodable object failed: Instance of '_File' Flutter

我正在嘗試將圖片發布到 API。這是我的帖子 Function:

  Future<http.Response> ajoutProduit(
  String refProduit,
  String nomProduit,
  double prixAchatProduit,
  double prixVenteProduit,
  String descriptionProduit,
  File imageProduit) async {
List produits = [];
final response = await http.post(
  Uri.parse('http://127.0.0.1:8000/api/produit/'),
  headers: <String, String>{'Content-Type': 'multipart/form-data'},
  body: jsonEncode(<String, dynamic>{
    'refProd': refProduit,
    'nomProd': nomProduit,
    'prixAchat': prixAchatProduit,
    'prixVente': prixVenteProduit,
    'descriptionProd': descriptionProduit,
    'imageProd': imageProduit,
  }),
);
if (response.statusCode == 200) {
  return produits = jsonDecode(response.body);
} else {
  throw Exception('Erreur base de données!');
}

}

這是我的 ImagePicker function:

  File uploadimage;

  Future<void> chooseImage() async {
final ImagePicker picker = ImagePicker();
var choosedimage = await picker.pickImage(source: ImageSource.gallery);
final File convertimage = await File(choosedimage.path);
setState(() {
  uploadimage = convertimage;
});

最后,這是確認按鈕:

ElevatedButton(
                  onPressed: (() {
                    if (_formKey.currentState.validate()) {

                      setState(() {
                        future = ajoutProduit(
                            refProduit.text,
                            nomProduit.text,
                            double.parse(prixAchatProduit.text),
                            double.parse(prixVenteProduit.text),
                            descriptionProduit.text,
                            uploadimage);
                      });
                      ScaffoldMessenger.of(context).showSnackBar(
                        const SnackBar(content: Text('Produit Ajouté')),
                      );
                      Navigator.of(context, rootNavigator: true).pop();
                    }
                  }), ...

當我按下按鈕時,我在調試控制台中收到此錯誤:錯誤:將 object 轉換為可編碼的 object 失敗:“_File”實例

我建議以表格形式上傳文件,您可以執行以下操作

List<http.MultipartFile> files = [await http.MultipartFile.fromPath('file', file.path)];
http.MultipartRequest request = new http.MultipartRequest("POST", uri);
for (http.MultipartFile file in files) {
      request.files.add(file);
    }

http.StreamedResponse responseStream = await request.send();

http.Response response = await 
http.Response.fromStream(responseStream).timeout(Duration(seconds: timeoutSeconds));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM