آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

انتخاب عکس + آپلود عکس + ارسال پارامتر به سرور PHP - دریافت کد

احمد اسدی  11 سال پیش  10 سال پیش
+36 0

توی پروژم به اینچیزا نیاز داشتم و سرچ کردم، دیدم اکثرآ با این موضوع مشکل دارن (بخصوص ارسال همزمان فایل و پارامتر).

با این کد میتونیم همزمان عکس (فایل) و پارمتر ها رو بصورت HttpMultipartMode به سرور ارسال کنیم :) 

  • کتابخانه های موردنیاز:
  1. httpmime-4.0.1.jar
  2. apache-mime4j-0.6.jar
  • تعریف دو متغییر
 String pathToOurFile; //برای قرار دادن مسیر فایل انتخاب شده از گالری
 private static final int SELECT_IMAGE = 1; //دریافت کد تصویر انتخاب شده در گالری
  • انتخاب عکس از گالری:
 Intent intent_gallery = new Intent();
 intent_gallery.setType("image/*");
 intent_gallery.setAction(Intent.ACTION_GET_CONTENT);
 startActivityForResult(intent_gallery, SELECT_IMAGE); 
  •  وقتی عکسی انتخاب شد و به برنامه بازگشتیم، برای گرفتن مسیر عکس، از onActivityResult استفاده میکنم
  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == SELECT_IMAGE && resultCode == RESULT_OK && null != data) { //اگر عکس انتخاب شده بود
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();

            ImageView imageView = (ImageView) findViewById(R.id.imgPreviw); //نمایش عکس انتخاب شده در برنامه
            imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
            pathToOurFile = picturePath; // قرار دادن مسیر عکس
            Toast.makeText(G.currentActivity,picturePath,Toast.LENGTH_LONG).show();
        }


    }
  •  ارسال فایل ها و پارامتر ها
 private void postData(){
        TextView txtFullName = (TextView) findViewById(R.id.txtFullName); //مقادیر
        final TextView txtTitle = (TextView) findViewById(R.id.txtTitle);
        TextView txtDesc = (TextView) findViewById(R.id.txtDesc);

        try{

            
            String textFile = pathToOurFile;
            Log.v(TAG, "textFile: " + textFile);


            String postReceiverUrl = "http://urSie.ir/add.php";
            Log.v(TAG, "postURL: " + postReceiverUrl);


            HttpClient httpClient = new DefaultHttpClient();


            HttpPost httpPost = new HttpPost(postReceiverUrl);

            File file = new File(textFile);
            FileBody fileBody = new FileBody(file);

            MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
            reqEntity.addPart("file", fileBody);
            reqEntity.addPart("fullname",new StringBody(txtFullName.getText().toString()));
            reqEntity.addPart("title",new StringBody(txtTitle.getText().toString()));
            reqEntity.addPart("desc",new StringBody(txtDesc.getText().toString()));
            httpPost.setEntity(reqEntity);

            HttpResponse response = httpClient.execute(httpPost);
            HttpEntity resEntity = response.getEntity();

            if (resEntity != null) {

                String responseStr = EntityUtils.toString(resEntity).trim();
                Log.v(TAG, "Response: " +  responseStr);
            }

        } catch (NullPointerException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  • صدا زدن postDate در AsyncTask
 public class PostDataAsyncTask extends AsyncTask<String, String, String> {

        protected void onPreExecute() {
            super.onPreExecute();
//میتونین در اینجا از یک لودینگ استفاده کنید } @Override protected String doInBackground(String... strings) { try { postData(); } catch (NullPointerException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String lenghtOfFile) { //در اینجا هم میتونین لودینگ رو دیسمیس کرد } }

 

  • تموم 

اومیدوارم مفید واقع بشه :)

 

+3 0
فایل php کجاست پس؟ (11 سال پیش)
+2 0
لطفا کد php رو هم قرار بدین (11 سال پیش)
+2 0
قربانـــــــــــــــت فداتـــــــــــــ بوس بوس D: (11 سال پیش)
+2 0
خیلی بهم ریختست .اگه توی گیت هاب بذارید اینجوری نمیشه .کلاس g چیه . کد های xml کجاست .دقت کنید (11 سال پیش)
0 0
مرسی احمد جان بابت این آموزشت، دو تا گزینه بهش اضافه کنی عالی میشه:1- باز شدن دوربین و گرفتن عکس 2- وقتی عکس انتخاب شد بتونیم اونو Crop کنیم، من خودم خیلی جست و جو کردم اما به نتیجه درستی نرسیدم!! مرسی (10 سال پیش)
 برای این سوال پاسخی وجود ندارد.

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