بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
انتخاب عکس + آپلود عکس + ارسال پارامتر به سرور PHP - دریافت کد
توی پروژم به اینچیزا نیاز داشتم و سرچ کردم، دیدم اکثرآ با این موضوع مشکل دارن (بخصوص ارسال همزمان فایل و پارامتر).
با این کد میتونیم همزمان عکس (فایل) و پارمتر ها رو بصورت HttpMultipartMode به سرور ارسال کنیم :)
- کتابخانه های موردنیاز:
- تعریف دو متغییر
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 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .