نمایش نتایج 1 تا 4 از 4

نام تاپیک: مشکل در اپلود عکس

  1. #1
    کاربر جدید آواتار techerfan
    تاریخ عضویت
    آذر 1393
    محل زندگی
    قزوین
    پست
    17

    مشکل در اپلود عکس

    با سلام
    من یه پروژه ای دارم که توی اون باید عکس رو روی سرور اپلود کنم و برای این کار از کتابخونه volley استفاده میکنم ولی این کتابخونه برای عکسایی با حجم بیشتر از 1 مگابایت کار نمیکنه. به این صورت که خیلی زمان میبره و در اخر هم ارور تایم اوت میده . میخواستم بدونم کسی راه حلی داره که بشه عکس با حجم بالا رو هم اپلود کرد ؟؟ یا این که کلا یه کتابخونه جایگزین پیشنهاد کنه؟؟

    کدمم اینه:

    public class UploadImage {
    private String uploadUrl = "/json_file/image_upload";
    private String type = "";
    String url = "";
    public String uploadImage(final Context context, final String type, final Bitmap bitmap){
    this.type = type;
    final android.support.v7.app.AlertDialog dialog = new BuildProgressDialog(context).buildDialog().create( );
    dialog.show();
    StringRequest request = new StringRequest(Request.Method.POST,new DataBaseHelper(context).getUrl()+ uploadUrl,
    new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
    url = response;
    Toast.makeText(context,response,Toast.LENGTH_SHORT ).show();
    dialog.dismiss();
    }
    }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    Toast.makeText(context,error.toString(),Toast.LENG TH_SHORT).show();
    dialog.dismiss();
    }
    }){
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
    HashMap<String,String> map = new HashMap<>();
    map.put("image",imageToString(bitmap));
    map.put("type",type);
    return map;
    }
    };
    request.setRetryPolicy(new DefaultRetryPolicy( 50000, 5, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    MySingleton.getInstance(context).addToRequestque(r equest);
    return url;
    }


    public String imageToString(Bitmap bitmap){
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    if (type.equals("jpeg")){
    bitmap.compress(Bitmap.CompressFormat.JPEG,100,byt eArrayOutputStream);
    } else if (type.equals("png")){
    bitmap.compress(Bitmap.CompressFormat.PNG,100,byte ArrayOutputStream);
    }


    byte[] imgBytes = byteArrayOutputStream.toByteArray();
    return Base64.encodeToString(imgBytes,Base64.DEFAULT);
    }
    }

  2. #2
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: مشکل در اپلود عکس

    این ارتباطی به Volley نداره. باید تنظیمات سرور رو به شکلی تغییر بدید که محدودیت سایز برای آپلود کمتر بشه

    علاوه بر این، بهتر هست تا تصاویر رو قبل از ارسال به سرور ریسایز و فشرده کنید..

  3. #3
    کاربر جدید آواتار techerfan
    تاریخ عضویت
    آذر 1393
    محل زندگی
    قزوین
    پست
    17

    نقل قول: مشکل در اپلود عکس

    سرور هیچ محدودیتی نداره.
    از طرفی هم نمیخوام فایل دستکاری بشه و از کیفیتش کم شه.

  4. #4
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: مشکل در اپلود عکس

    به هرحال یک سری محدودیت ها بصورت دیفالت وجود داره. بعنوان مثال وب سرور Nginx در تنظیمات پیشفرضش برای حجم فایلی که می‌تونه اپلود بشه محدودیت قرار داده. همچنین مفسر PHP محدودیت هایی داره، مثلن حداکثر حجم فایل، یا موردی که شما بهش اشاره کردید، هر اسکریپت باید تا حداکثر ۱ دقیقه پاسخ رو ارسال کنه وگرنه پروسه بسته میشه و تایم اوت میده.
    ابتدا باید بسته به زبان سمت سرور و وب‌سرور مورد استفاده، تغییراتی بدید تا بتونید فایل‌های حجیم تر رو آپلود کنید.

    اگر خیلی مهم هست که فایل‌های خیلی حجیم رو آپلود کنید، شاید لازم باشه از الگوهای دیگه برای آپلود استفاده کنید، مثلن یک روش این هست که فایل رو تکه تکه (chunk) به سرور ارسال کنید، و البته سمت سرور هم باید کدتون این مورد رو پشتیبانی کنه.

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •