首页 > 解决方案 > 如何在颤动中将图像发布到服务器

问题描述

我想将一些数据发布到我的 laravel 服务器,我可以将文本数据发送到服务器,但我无法将我的图像发送到服务器。请看看我做了什么。

我的模型课:

class Articles{
  int id;
  String title;
  String image;
  String author;
  toJson(){
    return {
      'id' : id.toString(),
      'title' : title,
      'image':image.toString()
    };
  }
}

我的图像文件

final title = TextEditingController();
  final details = TextEditingController();
  final categoryId = TextEditingController();
  final link = TextEditingController();

  File _image;
  final picker = ImagePicker();

  Future getImage() async {
    final pickedFile = await picker.getImage(source: ImageSource.camera);

    setState(() {
      if (pickedFile != null) {
        _image = File(pickedFile.path);
      } else {
        print('No image selected.');
      }
    });
  }

以及我在 onPressed 方法中传递的内容

var articles = Articles();
                      articles.title = title.text;
                      articles.details = await keyEditor.currentState.getText();
                      articles.image = _image.toString();
                      articles.category_id = dropdownValue.id;
                      articles.user_id = _userId;
                      _postArticles(context, articles);
                      setState(() {
                        isLoading = true;
                      });

当我发送没有图像的发布请求时,它成功工作,但使用图像后无法正常工作,但我能够在我的存储中获取图像路径。

I/flutter (11340): {id: null, views: null, title: ggg, details: hhh , category_id: 8, user_id: 3, image: File: '/storage/emulated/0/Android/data/com.drapp.flutter_lara_news/files/Pictures/df7f4e7c-2e89-4fc1-b315-fc8110a605f77878269288328274785.jpg'}

标签: androidflutterdart

解决方案


 Future _doPhoto() async {
           var image = await ImagePicker.pickImage(source: ImageSource.camera, maxHeight: 1024, maxWidth: 1024);
            var map = Map();
            map['image'] = base64Encode(image.readAsBytesSync());
            var res = await doUploadImageSvc(map);
    
    
          }
    
      static Future doUploadImageSvc(Map map) async {
        map["token"] = await API.getToken();
        var url = await getAPI() + "/do-ui-svcdoc.php";
        return http.post(url, body: map);
      }

推荐阅读