هم اکنون عضو شوید

ورود

فراموشی گذرواژه

گذروازه خود را فراموش کردید ؟

ورود

عضو شوید

با عضویت در سایت از امکانات فوق العاده بهرمنده خواهید شد.

دوره آموزش برنامه نویسی اندروید
آموزش آپلود عکس به دیتابیس Mysql در اندروید

آموزش آپلود عکس به دیتابیس Mysql در اندروید

سلام دوستان امیدوارم حالتون خوب باشد در این سری از آموزش برنامه نویسی اندروید به آموزش آپلود عکس به دیتابیس Mysql در اندروید می پردازیم در آموزش آپلود عکس به سرور ما یک دیتابیس داریم که بعد از آپلود آدرس عکس را برای ما نگه می دارد و این کار توسط یک فایل php انجام می شود در ادامه با ما همراه باشید.

 

ابتدا به یک دیتابیس نیاز داریم پس یک جدول (table) در mysql به نام check با دو فیلد ایجاد کرده نام فیلد اول را برابر با id و auto increment یا ai قرار داده و فیلد بعدی را برابر با image قرار دهید عکس زیر شاید بتواند به درک بهتر شما کمک کند. id را باید Primary key قرار دهید.

 

 

در بالا insert انجام شده است شما نباید مقداری در فیلد های بالا Insert کنید.

خب باید یک فایل php برای آپلود فایل ایجاد کنیم نام فایل ما برابر با Upload.php است بعد از ایجاد فایل کدهای زیر را در آن قرار دهید.

در بالا عمل post انجام می شود . قبل از توضیح دادن ادامه شما باید یک پوشه داشته باشید مثلا نام پوشه ما در اینجا برابر با myimage است بعد از اینکار یک پوشه دیگر به نام uploads در پوشه قبلی قرار دهید در بالا باید به جای $user یوزنیم دیتابیس خودتان و به جای $pass پسورد دیتابیس را قرار دهید . در صورتی که فایل به درستی آپلود شود پیام Successfully Uploaded و در غیر اینصورت Error نمایش داده می شود. در بالا query که این کار را انجام می دهد یک Insert به دیتابیس انجام میدهد یعنی ابتدا فایل آپلود می شود سپس مسیر آن به دست آمده و در mysql ما insert می شود نام هر فایل هم همان آیدی می شود تا راحتر بشود آنها را مدیریت کنیم.

برویم به سراغ کد های برنامه

ابتدا وارد فایل Build.gradle از نوع Module شده سپس در بخش dependencies کتاب خانه زیر را اضافه کنید.

پروژه را sync کنید.

وارد فایل AndroidManifest.xml شده و دسترسی های زیر را به آن اضافه کنید.

در layout اصلی که در اینجا نام آن برابر با activity_main.xml است یک ImageView و یک Button همانند زیر قرار دهید.

ImageView برای نمایش عکس و Button برای آپلود عکس است.

فایل php در آدرس زیر قرار گرفته است (برای مثال می گوییم همچین فایلی به خاطر مسائل امنیتی قرار گرفته نمی شود)

و درآخر کدهای زیر را در MainActivity.java قرار دهید (نیازی به کلاس دیگری نیست)

برای آپلود فایل ابتدا شما باید بروی ImageView کلیک کنید با کلیک بروی آن Gallery نمایش داده می شود onActivityResult به این منظور است که وقتی عکسی از Gallery انتخاب شد ما آدرس آن عکس را به دست بیاریم و بخش مهم کار این جاست که نمی شود عکس را دیتابیس قرار داد پس باید عکس تبدیل به متن شود برای اینکار ما از Void ی به نام getStringImage استفاده کردیم در این آموزش ما از RunTimePermission نیز استفاده کرده ایم البته در صورتی که api گوشی کاربر بالای ۲۳ باشد نمایش داده می شود در غیر اینصورت اتفاقی نمی افتد. با کلیک بروی Imageview بالا void ی به نام showFileChooser نمایش داده می شود که قبلتر آن را توضیح دادیم برای چه کاری است.

در این آموزش با استفاده از volley عمل آپلود را انجام میدهیم یعنی عکس را به فایل php که ساختیم post کرده سپس از آنجا در mysql قرار می گیرد (منظور همان آدرس است)

 

این آموزش هم به پایان رسید.

 

موفق و پیروز باشید.

درباره نویسنده

با زبان های برنامه نویسی C# , Java , Php به صورت تخصصی کار کردم و بیشتر وقتم رو در برنامه نویسی می گذرونم علاقه زیادی به ساخت اپلیکیشن اندروید دارم.

نظرها ( ۱۱ )

  1. ۵, مهر , ۱۳۹۶ در ۳:۴۸ ب.ظ

    سلام، متشکر بابت آموزش های خوبتون.
    یک سوال داشتم:
    وقتی کاربر وارد اپ میشه ما اطلاعات رو از سمت سرور میگیریم و بهش نشون میدیم، حالا هر موقع که کاربر از اپ خارج شد و دوباره وارد شد منطقی اینه که دوباره همه اطلاعات از سرور درخواست نشه و فقط اون اطلاعاتی که جدیدا اضافه شده از سرور گرفته بشه و به recyclerView اضافه بشه که هم سرعت آپدیت اطلاعات بالا بره و هم دیتای کمتری از اینترنت کاربر مصرف بشه.
    آیا نیاز هست که اول اطلاعات رو در گوشی کاربر به وسیله SQlite ذخیره کنیم و بعد id اون رو با id سمت سرور مقایسه کنیم یا کار دیگه ای باید انجام بشه؟
    روش استاندارد برای این کار چی هست؟
    لطف می کنید راه حل رو توضیح مختصر بدید.

  2. ۵, مهر , ۱۳۹۶ در ۳:۵۲ ب.ظ

    یه سوال دیگه هم داشتم، برای آپلود فایل باید چیکار کرد؟ مثلا آپلود فایل pdf و یا word
    آیا نحوه ارسال اونها با volley متفاوت هست؟
    متشکر

  3. رضا
    ۱۷, بهمن , ۱۳۹۶ در ۲:۱۶ ب.ظ

    سلام
    واسه ارسال عکس با حجم بالا باید چیکار کرد؟
    من عکس با حجم ۲مگ میفرستم برنامه کرش میکنه
    ولی عکس زیر ۱ مگ رو راحت میفرسته

  4. احمد
    ۱۹, خرداد , ۱۳۹۷ در ۱۲:۳۳ ق.ظ

    با سلام وخسته نباشید
    آقا آموزش تون واقعا عالی بود.

  5. رضا
    ۲۷, بهمن , ۱۳۹۷ در ۵:۰۷ ب.ظ

    دستتون درد نکنه خیلی جالب بود

  6. mahsa
    ۸, بهمن , ۱۳۹۸ در ۱:۳۳ ب.ظ

    سلام ممنون از آموزشتون
    من طبق آموزش شما پیش رفتم ولی با خطای
    BasicNetwork.performRequest: Unexpected response code 500 for …
    در logcat مواجه میشم. و در toast هم پیغام ServerError یا TimeoutError میده
    میشه راهنمایی کنین مشکل از کجاست؟ ممنون

  7. nima
    ۲۴, اسفند , ۱۳۹۸ در ۱۰:۲۲ ب.ظ

    سلام ممنون بابت اموزش خوبتون
    سوالی که داشتم اینه که من با همین روش اپلود میکنم عکسم رو ولی وقتی میرم روی هاست میبینم که عکسم حجمش حدود ۱۰ برابر شده روی هاست
    و بهمین دلیل هم در اپلود روی سرور بعضا با ارور null هم روبرو میشم!
    میخواستم ببینم علیت این افزایش حجم چیه و چطور میشه مشکل رو حل کرد؟؟