بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

ارسال عکس به سرور از طریق volley بدون استفاده از base64

مدیریت گفتگو
118426 10 سال پیش
آخرین تغییر: 10 سال پیش

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

من میخوام عکسها رو بدون تبدیل به base64 به سرور بفرستم، اما در volley فقط به صورت استرینگ میتوان استفاده کرد راه حلش اینه که باید از لایبری org.apache.http.legacy در volley استفاده کنیم.

مسئله اینجاست که ما نمیخواییم از این روش استفاده کنیم. کسی میتونه راه حل اصولی و تمیز معرفی کنه؟

base64 خیلی بده، اصلا توصیه نمیشه، فرضا اگر عکسها حدود 20% به حجم عکس اضافه میشه اصلا بهینه نیست و اگر عکس بالای 100 هزار تا آپلود بشه کلی حافظه سرور رو اشکال میکنه.

 

نظرات

118426 10 سال پیش
کسی نیست راه حل ارائه بده؟
118426 10 سال پیش
کسی نیست راه حل ارائه بده؟

پاسخ‌ها 1

118426 10 سال پیش

بلخره تونستم، عکسها رو بدون استفاده از base64، به صورت File به سرور بفرستم، حتی به صورت Multiple.

من ترکیبی از volley و okhttp3 استفاده کردم خیلی خیلی نتیجه خوبی داشت و سرعت بسیار عالی دارد. پایین هم سورس ارسال آرایه از عکسها به صورت داینامیک به File میریزیم، و در آخر میفرستیم به سرور. امیداورم مفید باشه.

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

     File sourceFile[] = new File[mSelectPath1.size()];
for (int i=0;i<mSelectPath1.size();i++){
        sourceFile[i] = new File(mSelectPath1.get(i));
}

MultipartBody.Builder buildernew = new MultipartBody.Builder()
.setType(MultipartBody.FORM);

buildernew.addFormDataPart("action","uploadimage");

for (int i = 0; i < mSelectPath.size(); i++) {

buildernew.addFormDataPart("uploaded_file[]",String.valueOf(i)+".png", RequestBody.create(MEDIA_TYPE, sourceFile[i]));
}
MultipartBody requestBody = buildernew.build();

OkHttpClient client = new OkHttpClient();
okhttp3.Request request = new okhttp3.Request.Builder()
.url(url)
.post(requestBody)
.build();
Call call = client.newCall(request);

call.enqueue(new Callback() {

@Override
public void onFailure(Call call, IOException e) {
}

@Override
public void onResponse(Call call, okhttp3.Response response) throws IOException {
try {

String resp = response.body().string();
if(response.isSuccessful()) {

} else {

}
} catch(IOException e) {
}
}
});

}

نظرات

سعید کاظمی 10 سال پیش
سلام . میشه آموزشش رو زودتر قرار بدید . منم میخوام استفاده کنم از این روش. ممنون
118426 10 سال پیش
بعله آموزش را در پست جداگانه قرار دادم: لینک لینک

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .