• 0

مشكلة حفظ الصور flutter

السلام عليكم ورحمة الله وبركاته 

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

قمت بعمل كود لجلب الصور من الاستوديو وحفظها في قاعدة بيانات mysql 

الكود شغال بشكل عام ولكن توجد مشكله لم استطع ايجاد حل لها

الصور يتم حفظها في مجلد الصور ولكن لا تظهر احصل على  الرسالة التاليه:

60a187b81c0f4_2021-05-17005836.png.e8b297a3ace35a65e2b96b1e419f6aa4.png

وهذا شكل الصور في المجلد

60a187c5484e5_2021-05-17005909.png.bd59fe2094eb7890ffbe5d39d0b21a10.png

 

ايضا الاسم في قاعدة البيانات يتكرر يعني لو عملت اول صورتين الامور رح تمشي تمام ولكن لو عملت اربع اسماء رح احصل على اثنان مع ان المفترض يكون الاسم مختلف مثال بشكل التالي:

http://******/PHP/admin/upload_pic/thumb_file_0.png
http://******/PHP/admin/upload_pic/thumb_file_1.png
http://******/PHP/admin/upload_pic/thumb_file_0.png
http://******/PHP/admin/upload_pic/thumb_file_1.png

 

 

الكود المستعمل كامل كالتالي:

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

   $NameImage = $_POST['NameImage'];

	include 'connt.php';

		$path = "upload_pic/$NameImage.png";

		$actualpath = "http://*********/PHP/admin/$path";


$sql = "INSERT INTO  photos (photo_url) VALUES (?)";		

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

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

$stmt->execute();

$result = $stmt->get_result();
		

	//	if(mysqli_query($conn,$sql)){

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

			echo "Successfully Uploaded";

	//	}

		

	$stmt->close();

?> 

 

 



void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
 
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: StoreAddScreen(),
    );
  }
}

class StoreAddScreen extends StatefulWidget {
  StoreAddScreen({Key key}) : super(key: key);

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

class _StoreAddScreenState extends State<StoreAddScreen> {
  List<String> photoPaths = List<String>();
  final picker = ImagePicker();

  static final String uploadEndPoint =
      'http://**********/PHP/admin/rest/AddNewCategrytesttodelete.php';



  void SaveDate() async {

      for (int i = 0; i < photoPaths.length; i++) {
        if (photoPaths[i].runtimeType == String) {
          String strPath = sprintf("thumb_file_%d", [i]);
   
          var url = uploadEndPoint;
          var response = await http.post(url, body: {
            "photo_url": photoPaths[i],
            "NameImage": strPath,

          });
          if (response.statusCode == 200) {

          } else {}

        }

      }

  }
  static const int MAX_PHOTO_UPLOAD = 5;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SingleChildScrollView(
      child: Column(
        children: [
          SizedBox(
            width: double.infinity,
            height: 300.0,
            child: Expanded(
              child: Padding(
                padding: EdgeInsets.all(20),
                child: SingleChildScrollView(
                  child: SizedBox(
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.start,
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: <Widget>[
                        Padding(
                          padding: const EdgeInsets.only(top: 10),
                          child: SizedBox(
                            height: 140,
                            child: Row(
                              children: [
                                Expanded(
                                  child: Container(
                                    decoration: BoxDecoration(
                                      color: Theme.of(context)
                                          .textTheme
                                          .bodyText1
                                          .color,
                                      borderRadius: BorderRadius.circular(8),
                                    ),
                                    child: ListView.builder(
                                      itemCount: photoPaths.length,
                                      scrollDirection: Axis.horizontal,
                                      itemBuilder:
                                          (BuildContext context, int index) {
                                        return InkWell(
                                          child: Padding(
                                              padding: EdgeInsets.only(
                                                  top: 8.0,
                                                  bottom: 8.0,
                                                  left: 8.0,
                                                  right: 8.0),
                                              child: Container(
                                                  height: 140,
                                                  width: 140,
                                                  child: ClipRRect(
                                                    borderRadius:
                                                        BorderRadius.circular(
                                                            8),
                                                    child: AspectRatio(
                                                      aspectRatio: 1.2,
                                                      child: Image.file(
                                                        File(photoPaths[index]),
                                                        fit: BoxFit.cover,
                                                        width: 300,
                                                        height: 300,
                                                      ),
                                                    ),
                                                  ))),
                                          onTap: () {
                                            showDialog(
                                              context: this.context,
                                              child: new AlertDialog(
                                                content: new FlatButton(
                                                  child:
                                                      new Text("delete_photo"),
                                                  onPressed: () => setState(() {
                                                    photoPaths.removeAt(index);
                                                  }),
                                                ),
                                              ),
                                            );
                                          },
                                        );
                                      },
                                    ),
                                  ),
                                ),
                                Padding(
                                  padding: const EdgeInsets.only(
                                      left: 10, right: 10),
                                  child: Container(
                                      width: 50,
                                      height:
                                          MediaQuery.of(context).size.height,
                                      decoration: BoxDecoration(
                                        color: Theme.of(context).accentColor,
                                        borderRadius: BorderRadius.circular(8),
                                      ),
                                      child: Material(
                                        color: Theme.of(context).accentColor,
                                        borderRadius: BorderRadius.circular(8),
                                        child: InkWell(
                                            borderRadius:
                                                BorderRadius.circular(8),
                                            child: Icon(
                                              Icons.add_a_photo,
                                              color: Theme.of(context)
                                                  .floatingActionButtonTheme
                                                  .foregroundColor,
                                            ),
                                            onTap: () async {
                                              if (photoPaths.length ==
                                                  MAX_PHOTO_UPLOAD) {
                                                showDialog(
                                                  context: this.context,
                                                  child: new AlertDialog(
                                                    content: new FlatButton(
                                                      child: new Text(
                                                          "max_photos_reached"),
                                                    ),
                                                  ),
                                                );
                                              }
                                              PickedFile pickedFile =
                                                  await picker.getImage(
                                                      source:
                                                          ImageSource.gallery,
                                                      imageQuality: 90);
                                              setState(() {
                                                if (pickedFile != null) {
                                                  photoPaths
                                                      .add(pickedFile.path);
                                                }
                                              });
                                            }),
                                      )),
                                )
                              ],
                            ),
                          ),
                        ),
                        Padding(
                          padding: const EdgeInsets.only(top: 16),
                          child: Center(
                            child: FlatButton(
                              color: Theme.of(context).accentColor,
                              // controller: _btnController,
                              onPressed: SaveDate,
                              child: Text(
                                ("addd"),
                                style: TextStyle(
                                  fontWeight: FontWeight.w500,
                                  color: Theme.of(context)
                                      .floatingActionButtonTheme
                                      .foregroundColor,
                                ),
                              ),
                            ),
                          ),
                        ),
                        SizedBox(
                          height: 50,
                        ),
                      ],
                    ),
                  ),
                ),
              ),
            ),
          ),
        ],
      ),
    ));
  }
}

ياليت اذا احد يعرف سبب المشكله يساعدنا ولكم جزيل الشكر

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

هل يمكنك إزالة png. من السطر التالي 

$path = "upload_pic/$NameImage";

ومن ثم إخباري بالنتيجة.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

إن حفظ الملفات بنفس الاسم يؤدي لحذف الملفات القديمة أو عدم حفظ الجديدة.

لذلك وليكون اسم الملف مميز وغير مكرر نضيف له قيمة الوقت:

$path = "upload_pic/_" . time() . "_$NameImage";

سبب مشكلة عدم فتح الصور ربما بسبب تغيير اللاحقة لكل الصور إلى PNG في المسار.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1
بتاريخ 8 دقائق مضت قال مروان مروان3:

مرحبا اخي @بلال زيادة

قمت بتجربه / بعد الازاله 

الكمبيوتر لا يعترف على الصور بمعنى لم يصبحو ملفات صور

مرفق لك صوره:

هل يمكنك إيضا تغيير السطر التالي 

await picker.getImage(source:ImageSource.gallery,imageQuality: 90);

إلى 

await picker.pickImage(source:ImageSource.gallery,imageQuality: 90);

و أخباري بالنتيجة.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1
بتاريخ الآن قال مروان مروان3:

مرحبا اخي قمت بتجربه واصبح الكود بشكل التالي كامل ولكن المشكله مثل ما هيا لم تحل


 File pickedFile =
                                              await ImagePicker.pickImage(source:ImageSource.gallery,imageQuality: 90);

 

يرجى رفع ملفات مشروعك كاملاً بشكل مضغوط. ربما هناك بعض المشاكل.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1
بتاريخ 9 ساعات قال مروان مروان3:

 مرفق ملفات المشروع كامله مع قاعدة البيانات تفضل:

 

to.rar

هل يمكنك رفع الملفات مرة أخرى؟ 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 22 دقائق مضت قال بلال زيادة:

هل يمكنك إزالة png. من السطر التالي 


$path = "upload_pic/$NameImage";

ومن ثم إخباري بالنتيجة.

مرحبا اخي @بلال زيادة

قمت بتجربه / بعد الازاله 

60a1938c21b3a_2021-05-17014830.png.0d4836fc6cd7d6f59b500e150a6284c5.png

الكمبيوتر لا يعترف على الصور بمعنى لم يصبحو ملفات صور

مرفق لك صوره:

 

بتاريخ 8 دقائق مضت قال Wael Aljamal:

إن حفظ الملفات بنفس الاسم يؤدي لحذف الملفات القديمة أو عدم حفظ الجديدة.

لذلك وليكون اسم الملف مميز وغير مكرر نضيف له قيمة الوقت:


$path = "upload_pic/_" . time() . "_$NameImage";

سبب مشكلة عدم فتح الصور ربما بسبب تغيير اللاحقة لكل الصور إلى PNG في المسار.

 مرحبا اخي الكريم @Wael Aljamal

قمت بتغير ووضع الوقت ولكن المشكله نفسها

مرفق لك صوره:

60a194187c02f_2021-05-17015138.png.8876103a347c0810e377ce3e075e4883.png

تمّ تعديل بواسطة مروان مروان3
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 3 دقائق مضت قال بلال زيادة:

هل يمكنك إيضا تغيير السطر التالي 


await picker.getImage(source:ImageSource.gallery,imageQuality: 90);

إلى 


await picker.pickImage(source:ImageSource.gallery,imageQuality: 90);

و أخباري بالنتيجة.

مرحبا اخي قمت بتجربه واصبح الكود بشكل التالي كامل ولكن المشكله مثل ما هيا لم تحل

 File pickedFile =
                                              await ImagePicker.pickImage(source:ImageSource.gallery,imageQuality: 90);

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 7 دقائق مضت قال بلال زيادة:

يرجى رفع ملفات مشروعك كاملاً بشكل مضغوط. ربما هناك بعض المشاكل.

 مرفق ملفات المشروع كامله مع قاعدة البيانات تفضل:

 

to.rar

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 4 دقائق مضت قال بلال زيادة:

هل يمكنك رفع الملفات مرة أخرى؟ 

اهلا بك اخي بطبع تفضل

 

to.rar

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 39 دقائق مضت قال مروان مروان3:

اهلا بك اخي بطبع تفضل

 

to.rar

عذراً أخي , هل تقوم بتحديث ملفات مشروعك لتتناسب مع flutter 2  ومن ثم تقوم برفعها مرة أخرى لأنه يوجد لدي flutter 2 و الملفات ليست متوافقة معها لذلك أرجوا تحديثها لأنه لو قمت بالرجوع إلى الإصدار الغير flutter 2 سأفقد الكثير من مشاريعي لذلك يجرى تحديث مشروعك و إرفاقه مجدداً.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 18 دقائق مضت قال بلال زيادة:

عذراً أخي , هل تقوم بتحديث ملفات مشروعك لتتناسب مع flutter 2  ومن ثم تقوم برفعها مرة أخرى لأنه يوجد لدي flutter 2 و الملفات ليست متوافقة معها لذلك أرجوا تحديثها لأنه لو قمت بالرجوع إلى الإصدار الغير flutter 2 سأفقد الكثير من مشاريعي لذلك يجرى تحديث مشروعك و إرفاقه مجدداً.

طيب اخي ساقوم بذلك

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 5 ساعات قال مروان مروان3:

طيب اخي ساقوم بذلك

اهلا اخي @بلال زيادة

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

قمت بتحديث المشروع الان مرفق لك ياليت تطلع عليه لو تكرمت

to.rar

تمّ تعديل بواسطة مروان مروان3

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن