اذهب إلى المحتوى

السؤال

نشر

تحيه طيبه للجميع

اقوم بستعمال المكتبة التاليه :

https://pub.dev/packages/wechat_assets_picker

لتمكين المستخدم من اختيار مجموعة من الصور وبعدها يتم رفع هذا الصور الى قاعدة البيانات على السيرفر بواسطة  mysql + php  +http

احاول حفظ الصور التي يقوم المستخدم باختيارها الان ولكن الامر لا ينجح حتى انني لا اتلقى اي اشعار بوجود خطاء او ما شابه لا اعلم ما هيا المشكله بضبط 

الصفحه كامل كالتالي:

import 'dart:io';
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:wechat_assets_picker/wechat_assets_picker.dart';


void main() {
  runApp(
   MyApp(),

  );
}

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: UploadImageDemo(),
    );
  }
}

class UploadImageDemo extends StatefulWidget {

  @override
  UploadImageDemoState createState() => UploadImageDemoState();
}


class UploadImageDemoState extends State<UploadImageDemo> {

  List<AssetEntity> assets = <AssetEntity>[];
  Future<void> selectAssets() async {
    final List<AssetEntity> result = await AssetPicker.pickAssets(
      context,
      maxAssets: 4,
      pathThumbSize: 84,
      gridCount: 4,
      selectedAssets: assets,

      requestType: RequestType.common,
    );
    if (result != null) {
      setState(() {
        assets = List<AssetEntity>.from(result);

      });

    }
  }


  Widget imageWidget(int index) {
    return Positioned.fill(
      child: Image(
        image: AssetEntityImageProvider(
          assets.elementAt(index),
          isOriginal: false,
        ),
        fit: BoxFit.cover,
      ),
    );
  }


  String base64Image;
  static final String UplodURL ='https://XXXXXXXXXXXXXXXXX.php';


void SaveDate() async {

  for (int i = 0; i < assets.length; i++) {
    if (assets[i].runtimeType == String) {

      final bytes = File(assets[i].toString()).readAsBytesSync();
      base64Image = base64Encode(bytes);

      var response = await http.post(Uri.parse(UplodURL), body: {
        "image": base64Image,

      });

      if (response.statusCode == 200) {
setState(() {
  print(response.statusCode);
});
      } else {}
    }

  }

}
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(

        actions: <Widget>[
          IconButton(
            icon: Icon(
              Icons.save,
              color: Colors.black,
            ),
            onPressed: () {
              SaveDate();

            },
          ),
          IconButton(
            icon: Icon(
              Icons.add,
              color: Colors.black,
            ),
            onPressed: () {
              selectAssets();

            },
          ),
        ],
      ),
      body: Column(
        children: <Widget>[


          AnimatedContainer(
            duration: kThemeAnimationDuration,
            curve: Curves.easeInOut,
            width: MediaQuery.of(context).size.width,
            height: assets.isNotEmpty ? 100.0 : 0.0,
            decoration: BoxDecoration(
              color: Theme.of(context).backgroundColor,
            ),
            child: ListView.builder(
                physics: const BouncingScrollPhysics(),
                scrollDirection: Axis.horizontal,
                itemCount: assets.length,
                itemBuilder: (BuildContext context, int index) {
                  return Container(
                    margin: const EdgeInsets.symmetric(horizontal: 5.0, vertical: 10.0),
                    child: AspectRatio(
                      aspectRatio: 1.0,
                      child: ClipRRect(
                        borderRadius: BorderRadius.circular(5.0),
                        child: Stack(
                          children: <Widget>[
                            imageWidget(index),


                          ],
                        ),
                      ),
                    ),
                  );


                }
           
            ),
          ),



        ],
      ),
    );
  }
}

 

اما صفحة php كالتالي:

<?php
		$image = $_POST['image'];


	include 'con.php';

	$path = "img/" . uniqid() . ".png";

		$actualpath = "https://***********/$path";


$sql = "INSERT INTO  testtable (image) VALUES (?)";		

$stmt = $con->prepare($sql); 

$stmt->bind_param("s",$actualpath);

$stmt->execute();

$result = $stmt->get_result();
		


			file_put_contents($path,base64_decode($image));


	

	$stmt->close();

?> 

بنسبة الى صفحة php  انا واثق انها تعمل بدون اي مشكلة لنني قمت باختبار ذلك من خلال رابط الصفحه 

المشكله  في كود حفظ الصور ()SaveDate في فلاتر ياليت اذا احد لديه فكره او معرفة بالمشكله يفيدنا لو تكرمتو

 

Recommended Posts

  • 0
نشر

هل حاوت استخدام حزمة dio لكي تتمكن من رفع الصور بشكل سليم , فهي لديها تعامل رائع في رفع الصور 

Future<bool> uploadImage(filePath, String image) async {
    final url = Config.url + Config.uploadImage;

    String fileName = filePath.path.split("/").last;
    var data = FormData.fromMap({
      "image": await MultipartFile.fromFile(
        filePath.path,
        filename: fileName,
      ),
      "email": email,
    });
    Dio dio = new Dio();
    var res = await dio.post(url, data: data, options: new Options(headers: {
      HttpHeaders.authorizationHeader: 'Bearer $token',
      HttpHeaders.contentTypeHeader: 'application/json'
    }));
    
    return res.statusCode == 200 ? true : false;
  }

بحيث يمكنك تمرير مسار الصورة ليتم رفع الصورة إلى المسار المحدد في api و اسم الصورة إذا أردت حفظ اسم الصورة بداخل قاعدة البيانات. 

  • 0
نشر
بتاريخ 51 دقائق مضت قال بلال زيادة:

هل حاوت استخدام حزمة dio لكي تتمكن من رفع الصور بشكل سليم , فهي لديها تعامل رائع في رفع الصور 


Future<bool> uploadImage(filePath, String image) async {
    final url = Config.url + Config.uploadImage;

    String fileName = filePath.path.split("/").last;
    var data = FormData.fromMap({
      "image": await MultipartFile.fromFile(
        filePath.path,
        filename: fileName,
      ),
      "email": email,
    });
    Dio dio = new Dio();
    var res = await dio.post(url, data: data, options: new Options(headers: {
      HttpHeaders.authorizationHeader: 'Bearer $token',
      HttpHeaders.contentTypeHeader: 'application/json'
    }));
    
    return res.statusCode == 200 ? true : false;
  }

بحيث يمكنك تمرير مسار الصورة ليتم رفع الصورة إلى المسار المحدد في api و اسم الصورة إذا أردت حفظ اسم الصورة بداخل قاعدة البيانات. 

اهلا بك اخي نعم قمت بمحاولة بواسطة هذا المكتبه ولكني لا املك خبره سابقه في التعامل لديها انا استعمل http 

ياليت لو تكرمت تضع الكود كامل مع كود php الخاص فيها

  • 0
نشر
بتاريخ On 10/15/2021 at 10:39 قال مروان مروان3:

اهلا بك اخي نعم قمت بمحاولة بواسطة هذا المكتبه ولكني لا املك خبره سابقه في التعامل لديها انا استعمل http 

ياليت لو تكرمت تضع الكود كامل مع كود php الخاص فيها

هل من مستجدات؟

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...