繁体   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