在Flutter中使用MultiPartFile将图像上传到数据库

fnvucqvd  于 2022-12-19  发布在  Flutter
关注(0)|答案(1)|浏览(247)

我想上传一张已经从数据库(产品表)中检索到的图片到购物车表,问题是,我不能在MultipartFile("file",image.path)中使用. path;
我得到一个错误,如果我尝试使用. path与我的图像变量。我也尝试了几种方法,但没有一个是工作...我将附上我的代码如下
图像已经存储在我从上一个屏幕收到的Map(revievedMap)中,所以我没有使用imagePicker,我尝试访问的产品图像已经存储在数据库中。

request.fields['image'] = "http://10.0.2.2:/shopice/assets/${args.product.image}";
request.fields['image'] = "http://localhost:/shopice/assets/${args.product.image}";

我试过上面的代码,显然没有工作.

var pic = await http.MultipartFile.fromPath("image", args.product.image!);
//request.files.add(pic);

我也尝试过这个方法,但是我需要在第二个参数上设置路径,但是args.product.image.path()返回了这个错误

[the getter 'path' isn't defined for the type 'String'. (Documentation)  Try importing the library that defines 'path', correcting the name to the name of an existing getter, or defining a getter or field named 'path'.]

下面是代码:

//args.receivedMap: is my buyer detials
//args.product: is the product i'm trying to add to cart,  which //contains the image

args.seller: is the seller details
child: FlatButton(
      onPressed: ()async {
                                  if(!args.receivedMap.isEmpty){
                                    
                                    final uri = Uri.parse("http://10.0.2.2:/shopice/api/buyer/addToCart");
                                    var request = http.MultipartRequest('POST', uri);
                                    request.fields['buyer_id'] =args.receivedMap['id'];
                                    request.fields['seller_id'] = args.seller.id.toString();
                                    request.fields['seller_name'] = args.seller.name!;
                                    request.fields['buyer_name'] = args.receivedMap['name'];
                                    request.fields['price'] = args.product.pricePerKg!;
                                    request.fields['product_name'] = args.product.name!;
                                    //request.fields['image'] = "http://10.0.2.2:/shopice/assets/${args.product.image}";
                                    //var pic = await http.MultipartFile.fromPath("image", "http://localhost:/shopice/assets/${args.product.image}");
                                    //File file = "http://10.0.2.2:/shopice/assets/${args.product.image}" as File;
                                    //var pic = await http.MultipartFile.fromString("image", args.product.image!);
                                    //request.files.add(pic);

                                    var bytes = (await rootBundle.load('http://localhost/shopice/assets/${args.product.image}')).buffer.asUint8List();
                                    var mpFile = http.MultipartFile.fromBytes('img', bytes);
                                    request.files.add(mpFile);

                                    var response = await request.send();
                                    print(args.product.image);

                                    if (response.statusCode == 200) {
                                      showModalBottomSheet(context: context, builder: (context){
                                        return Wrap(children: [ListTile(leading: Icon(Icons.done_outline), title: Text('Product Added TO Cart'),)],);
                                      });
                                    }
                                    else if (response.statusCode == 500) {
                                      showModalBottomSheet(context: context, builder: (context){
                                        return Wrap(children: [ListTile(leading: Icon(Icons.done_outline), title: Text('Server Error '),)],);
                                      });
                                    }
                                    else {
                                      showModalBottomSheet(context: context, builder: (context){
                                        return Wrap(children: [ListTile(leading: Icon(Icons.done_outline), title: Text('ERROR WHILE PERFORMING OPPERATION\n CONTACT SUPPORT'),)],);
                                      });
                                    }

                                  }
                                  else if(args.receivedMap.isEmpty){
                                    var snackbar = SnackBar(
                                      content: Text('Login To Add Product To Cart!',
                                          style: TextStyle(fontSize: 16.0)),
                                      backgroundColor:
                                      const Color(0xff4A777A),
                                      padding: EdgeInsets.only(left: 50.0),
                                    );
                                    ScaffoldMessenger.of(context)
                                        .showSnackBar(snackbar);
                                  }

                              },
                              child: Text(
                                'Add to Cart',
                                style: GoogleFonts.poppins(
                                    color: Color(0xff4A777A)),
                              )),
mxg2im7a

mxg2im7a1#

我只是简单地添加了图像从后端和忘记做它与flutter,我移动了图像与php,并做了一些试验和错误,后来的工作

相关问题