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

السؤال

نشر

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

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

قمت بعمل كود لجلب الصور من الاستوديو وحفظها في قاعدة بيانات 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,
                        ),
                      ],
                    ),
                  ),
                ),
              ),
            ),
          ),
        ],
      ),
    ));
  }
}

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

Recommended Posts

  • 1
نشر

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

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

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

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

  • 1
نشر
بتاريخ 8 دقائق مضت قال مروان مروان3:

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

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

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

مرفق لك صوره:

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

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

إلى 

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

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

  • 1
نشر
بتاريخ الآن قال مروان مروان3:

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


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

 

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

  • 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
  • 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);

 

  • 0
نشر
بتاريخ 39 دقائق مضت قال مروان مروان3:

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

 

to.rar

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

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

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

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

  • 0
نشر (معدل)
بتاريخ 5 ساعات قال مروان مروان3:

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

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

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

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

to.rar

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...