فیلم آموزش آپلود تصویر با volley در اندروید استودیو
آموزش آپلود تصویر روی سرور برنامه نویسی سمت سرور php
آپلود تصویر با volley ، بنام خدا دوستان سلام در خدمت شما هستیم با یکی دیگر از آموزش اندروید استودیو ، توی این جلسه از فیلم های آموزشی اندروید می خواهیم بپردازیم به مبحث آپلود تصویر روی سرور php و کد نویسی مربوط به آپلود تصویر با volley این قسمت رو پیاده سازی کنیم . به این صورت که کاربر با انتخاب دلخواه خود می تواند تصویری را از گوشی خود انتخاب و سپس روی سرور تصویر مربوط را ارسال کند و اگر آموزش های سایت خانه اندروید رو دنبال کرده باشین ما آموزش خواندن و یا دریافت اطلاعات از سمت سرور رو خدمت شما عزیزان آموزش دادیم.
حتما بخوانید : نمایش اطلاعات از سمت سرور JsonArrayRequest Volley اندروید استودیو
خوب دوستان همان طور که می دانید برای اضافه کردن کتابخانه والی باید در بخش گردل کتابخانه زیر را وارد کرده و سپس روی سینک کلیک کنیم تا کتابخانه فوق توسط گردل دانلود و قابل استفاده باشد.
compile 'com.android.volley:volley:1.0.0'
کاری که می خواهیم انجام بدیم :
سرفصل های فیلم آموزش آپلود تصویر با volley در اندروید استودیو
– برنامه نویس سمت سرور
-آموزش فیلتر کردن تصاویر توسط Intent
-ارسال پارامتر به سمت سرور همراه با تصویر
-پیاده سازی ارایه از نوع بایت byte
-ذخیره نام تصویر توسط id
– سورس کد بخش xml
-آموزش کار با bitmap
-پیاده سازی interface و فراخوانی
-ارسال تصویر و تبدل به رشته ByteArrayOutputStream
-پیاده سازی کلاس مجزا برای ارسال تصویر
-پیاده سازی متد های والی برای ارسال تصویر و پارامتر
-گرفتن String از تابع
-کار با هش مپ ها <>Map
–توضیحاتی کامل در مورد آپلود تصویر
-چک کردن متد های ارسال کاربر
-ارسال و دریافت توسط file_put_contents
–پیاده سازی سازنده برای گرفتن context و ProgressDialog
-و…
لطفا فیلم آموزشی رو هم ببنید برای توضیحات بیشتر :
حجم فیلم : ۱۳۰ مگابایت
پسورد فایل فشرده : homeandroid.ir
منبع آموزش : خانه اندروید
سلام
من آموزش رو پیش رفتم ولی برای ارسال عکس به سرور یک متغیر استرینگ باید بفرستم و یک اینتیجر
چجوری بفرستمش در قسمت هش مپ؟؟(چون اونجا یک نوع میشه فرستاد انگار)
و دوم اینکه اعتبار سنجی با توکن اینجا لازم نیست؟؟
سلام و درود
در بخش پارمتر ها می توانید پارمتر مورد نظر خودتون رو ارسال کنید.
hashmap(String,”value”)
hashmap(int,”1″)
برای ارسال توکن به همین شکل
با احترام.
سلام
موقع اججرای اپلیکیشن
این پیغام رو میده
Cleartext HTTP traffic to shop1200.ir not permitted
اینو سرچ کردم گفتن تو AndroidManifest.xml
android:usesCleartextTraffic=”true”گفتن اینو اضافه کنم
اجرا ک میگیرم اپلیکیشن فقط یکبار کار می کند
و باید از گوشی پاک کنم و دوباره نصب می کنم یکبار دیگر کار می کند اونم دوبار فقط یکبار
سلام و احترام
در این خصوص آموزش زیر رو مشاهده کنید.
https://www.aparat.com/v/4bWtS
با احترام.
سلام. خسته نباشید
من مطابق آموزش پیش رفتم و پیغام موفقیت آمیز بودن آپلود رو داد و لینک عکس داخل دیتابیس درج شد ولی داخل پوشه ای که داخل هاست برای آپلود عکس ایجاد کردم، عکسی آپلود نمیشه. permission پوشه رو با ۷۷۷ هم تست کردم.
سلام و احترام
کاربر گرامی دقت کنید لطفا اگر حجم تصویر بالاست باید فشرده بشه که در این خصوص باید آموزش جدید آپلود چندین تصویر رو مشاهده کنید .
چنانچه به غیر این هست مشکل از سمت اندروید یا php چیست که نیازمند بررسی هست.
با احترام
سلام خسته نباشید من می خوام با استفاده از اموزش شما فایل صوتی وتصویری به هماه عکس وسایر اطلاعات مثل نام عکس ونام فایل صوتی ویا تصویری وتوضیحات لینک دانلود و…. به سمت سرور ارسال کنم تا با برنامه ام بتونم دانلودش کنم
این آموزش به من کمک می کنه؟
سلام
خیر فقط برای آپلود تصویر به کارتون میاد.
با احترام.
سلام
برنامه درست کار میکنه
ولی اگه مثلا حجم عکس۲یا۳ مگابایت باشه برنامه کرش میکنه میاد بیرون
اما رو عکسایی که حجمش زیر ۱ مگابایت باشه راحت ارسال میشه با همون کیفیت
راهی هست که بشه حجم بالا ارسال کرد؟
سلام و درود دوست عزیز رضا
امکان ارسال تصویر با ۴ میگ و یا ۵ میگ هم هست و مشکلی نیست ولی باید تصویر رو سایزش رو حتما کمتر کنید .
برای اینکار جایی که تصویر رو به بایت تبدل می کنید
سورس کد زیر رو استفاده کنید
int nh = (int) ( bitmap.getHeight() * (412.0 / bitmap.getWidth()) );
Bitmap scaled = Bitmap.createScaledBitmap(bitmap, 412, nh, true);
و scaled رو بفرستید.
با احترام.
سلام ممنون
این کدی که نوشتم درسته؟
public String getStringImage(Bitmap bitmap) {
Log.i(“MyHitesh”, “” + bitmap);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String temp = Base64.encodeToString(b, Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(b,0,b.length);
int nh = (int) ( bitmap.getHeight() * (412.0 / bitmap.getWidth()) );
Bitmap scaled = Bitmap.createScaledBitmap(bitmap, 412, nh, true);
return temp;
قسمت return temp; باید scaled رو بنویسیم؟
سلام و درود
بله درسته همینجا
بازم تست بگیرن نشد توی تلگرام پیام بدین.
با احترام.
سلام
ایم خط کدداخل هاست واقعی چی بنویسم؟
$path = “img/$id.png”;
$actualpath=”localhost/server/$path”;
ادرس هاست رو مینیوسم ولی موقع سرچ چیزی پیدا نمیکنه
پوشه تو در تو دارم
سلام دوست عزیزم رضا
مسیر دهی رو انجام بدین مثلا الان توی پوشه server گفتین به جای پوشه server پوشه ای که می خواهین ذخیره بشه رو بگین . مثلا image
$actualpath=”image/$path”;
موفق باشین.
سلام
مشکل ذخیره شدن رو حل کردم
ولی میخوام متن فارسی هم باهاش ارسال کنم
اما داخل دیتابیس به این صورت ذخیره میشهبیژنی
کد اتصال به سرور مشکلی داره؟
define(‘host’,’localhost’);
define(‘username’,’shohdano_golkhan’);
define(‘password’,’reza159357456′);
define(‘DB’,’shohdano_golkhane’);
mysql_query($con.”SET CHARSET UTF8″);
$con=mysqli_connect(host,username,password,DB) or die(‘con not connnect to database’);
سلام دوست عزیز
وقتی که پست رو ارسال می کنید قبل از دستور insert یا بعد از اون تفاوتی نداره
از کانکشنی که به دیتابیس میفرستین دستور زیر رو قرار بدین.
$con->set_charset(“utf8”);
با احترام.
سلام من مشکل از کد های php دارم که جستجو میزنم خطا errorمیده نمیدونم خطا از کجاست لطفا کدی که در آموزش نوشته بودید به ایمیلم ارسال کنید با تشکر
سلام دوست عزیزم.
توی تلگرام پیام بدین تا راهنمایی کنم و براتون کد ها رو هم بفرستم.
با احترام.
سلام در قسمت آموزش php ننوشتید ما چجوری طبق آموزش عمل کنیم وقتی کدphp ندونیم چی هست
سلام دوست عزیزم.
خیر سورس کد به صورت کامل توضیح داده شد و با نوشتن هیچ فرقی نداشت.
با احترام.
سلام
چکار کنیم عکس با کیفیت به سمت سرور ارسال شود
من اینکار رو انجام دادم ولی عکسهای کیفیتشون خیلی کم میشه
آیا راه کاری دارید برای آپلود عکس با همان کیفیت خودش
سلام خدمت شما
تصویر به خوبی آپلود میشه و کیفیت هم همون جا توضیح دادم قسمتی هست که میگم کیفیت ۱۰۰ یا ۸۰ اونجا اگر ۱۰۰ بزارین تصویر با کیفیت اصلی ارسال میشه دوست عزیزم.
با احترام.
سلام خسته نباشید.
ممنون آموزش خوب و مفیدی بود.
لطف می کنید یه آموزش هم در رابطه با آپلود فایل با volley قرار بدید، خیلی بهش احتیاج دارم، اما آموزش مفیدی پیدا نکردم، یا اگر شما آموزش خوبی سرغ دارید لطف کنید لینکش رو برام بفرستید.( تفاوت زیادی با آپلود تصویر داره؟)
خیلی ممنون.
سلام و احترام
حتما آموزش رو تهیه می کنم دوستم.
با احترام.
با این اموزش میشه عکس هایی که حجم زیادی دارند یا کیفیت بالایی دارند رو هم اپلود کرد؟
* من قبلا یک اموزش توی نت گرفتم ولی عکس هایی که با دوربین گوشی میگرفتم و کیفیت بالا داشتن ارسال نمیکرد و باید کیفیت رو کم میکردم تا ارسال شود.
سلام و احترام
لطفا دیدگاه های دیگه رو مطالعه کنید قبلا پاسخ داده شده.
با احترام
سلام وقت بخیر
من این اموزش رو تهیه کردم الان همه چیز درست کار میکنه اما یه مشکلی دارم
زمانی که عکس رو اپلود میکنم تابع onerrorListener اجرا میشه و ارور تایم اوت والی میده
تحقیق کردم نوشته بود مدت زمان تایم اوت رو بالا ببرید اما با ایم کار وقتی عکس اپلود میشه به صورت یه عکس خاکستری اپلود میشه ینی عکس مشخص نیست
ممنون میشم راهنماییم کنید
سلام خدمت شما دوست عزیزم
با توجه به اینکه سرعت اینترنت ایران خیلی کمه باید timeout زیادی رو برای ارسال به سمت سرور در نظر بگیرن.
stringRequest.setRetryPolicy(new DefaultRetryPolicy(100000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Volley.newRequestQueue(context).add(stringRequest);
البته مشکل برای ارسال به سمت cpanel پیش میاد و در برخی موارد مشکل از سورس کد شماست که ارسالی انجام نمیشه و خطا timeout بر می گردونه.
بررسی شد: جواب سوال شما :
ویرایش دیدگاه : لطفا دقت کنید اگر مسیر فایل اشتباه باشه فایل مورد نظر به صورت سیاه ارسال میشه.
با احترام.
با سلام با استفاده از این آموزش میشه چندتا عکس رو هم ارسال کرد مثلاً مثل برنامه های تبلیغاتی مثل دیوار
سلام و دورود خدمت شما
دوست عزیز در دیدگاه قبلی خدمتون اعلام کردم.
لطفا مطالعه کنید.
با احترام.
با سلام و احترام
با استفاده از این آموزش میشه همزمان سه تا یا بیشتر عکس رو ارسال کرد سمت سرور ؟
سلام خدمت شما دوست عزیزم.
توی این فیلم ما یک دونه عکس اپلود می کنیم و اگر قصد شما افزودن یا انتخاب چند تصویر هست حتما بایدبا ارایه ها کار کنید که هنوز آموزشی در باب موضوع فرصت تهیه نداشتم و در فرصت مناسب تهیه می کنم.
و این آموزش در حال حاضر جوابگوی کار شما هست.
با احترام.
سلام
این آموزش هم آپلود کردن عکس از دوربین و هم گالری رو نشون میده ؟
روش ارسالش base64 هست یا نه ؟
تشکر
سلام و احترام خدمت شما
بله از گالری آپلود می کنیم و روش ارسال هم همون base64 هست
موفق باشین.
با احترام.
سلام وقت بخیر از آموزش خوبی که ارائه دادین تشکر می کنم.
سلام و احترام.
وظیفه بود دوستم.
با احترام.
درود من می خوام برنامه اندروید ی واسه خودم بسازم که هر وقت از داهل این برنانه ویدیویی را اپلود می نمایم روی پروفایل یوتیوب من آپلود شود آیا این مسئله شدنی است
سلام خدمت شما دوست عزیزم.
باید با api های یوتویوب کار کنید.
و بنده چون نیازی نداشتم این مورد رو کار نکرده ام ولی جستجو کنید به نتیجه دلخواه خودتون می رسید.
با احترام.
سلام و روز بخیر
با تشکر از مطالب خوبتون مشکلی داشتم که خواستم راهنماییم کنید
من دقیقا مثل آموزش شما پیش رفتم اشکالی که دارم اینه که عمل insert در دیتابیس انجام میشه اما فایل مورد نظر من بر روی هاست ارسال نمیشه.
هاست من ویندوزی هست و کد خودم را براتون میزارم ببینید آیا مشکل از کد هست یا چیز دیگه ای
$UserID=$_POST[“UserID”];
$RowNumberView=$_POST[“RowNumberView”];
$ProductCode=$_POST[“ProductCode”];
$PicUrl=$_POST[“PicUrl”]; //$_FILES
$PicDesc=$_POST[“PicDesc”];
$PicStyle=$_POST[“PicStyle”];
//print “& Secend test php file:UserID=”.$UserID.” RowNu= “.$RowNumberView.” PrCode= “.$ProductCode.” PicUrl= “.$PicUrl.” PicDesc= “.$PicDesc.” PicStyle= “.$PicStyle;
$result = sqlsrv_query($conn,”SELECT GalleryCode from [products].[tbl_ProductsGallery] ORDER BY GalleryCode “);
$id = 0;
$gallery=array();
while( $row = sqlsrv_fetch_array($result))
{
$id=$row[“GalleryCode”];
$id=$id+1;
}
$UserGalleryCode = $UserID.’_’.$id;
$path = “uploads/category/$UserGalleryCode.png”;
$actualpath = “http://refahbon.ir/uploadexample/$path”;
$result2 = sqlsrv_query($conn,”INSERT INTO [products].[tbl_ProductsGallery] ( UserID, RowNumberView, ProductCode, PicUrl, PicDesc, PicStyle, Status ) VALUES (‘$UserID’, ‘$RowNumberView’, ‘$ProductCode’, ‘$actualpath’, ‘$PicDesc’, ‘$PicStyle’, 1)”);
if($result2){
file_put_contents($path,base64_decode($PicUrl));
print $path;
}else{
print “no insert”;
}
ممنون میشم راهنماییم کنید
سلام و احترام دوست عزیز
قبل از هرکاری باید بررسی کنید ببنید اصلا فایل کانفیگ توی دیتابیسی یا سی پنل یا هاستی که قرار اصلا به دیتابیس مورد نظر کانیکت میشه یا خیر
لطفا بررسی بفرمایید.
با احترام.
سلام از وبسایت خوبتون تشکر می کنم و ارزش خرید رو داشت هرچند میدونم که قیمت واقعی نزدید و انشالا کمکی بشه به پابرجا موندن سایت خانه اندروید تشکر از لطفتون.
سلام و احترام دوست عزیز علی
از شما ممنونم. بله محصولاتی که ارائه شده قیمت واقعی نیست و قیمتی برای تامین هزینه های سرور.تشکر
از ادمین گرامی تشکر می کنم بابت آموزش خوبی که ارائه دادن.
سلام و احترام خدمت شما دوست عزیزم محسن
خواهش می کنم وظیفه بود.
با احترام.
ایول عالی بود.
لطفا دارین.