나는 지난 며칠 동안 android.에 대한 초보자입니다. 내 이미지를 서버로 보내는 데 문제가 있습니다. 라이브러리에서 가져올 일부 텍스트 필드와 이미지를 포함하는 양식이 있습니다. 이미지 업로드를 제외하고 모든 것이 완벽하게 작동합니다 .Google에서 대부분의 자습서를 시도했습니다. 주된 문제는 logcat에 오류가 표시되지 않는다는 것입니다. 실제로 잘못되었습니다. 이것이 내가 한 일입니다
이 코드를 사용하여 갤러리에서 이미지를 얻었습니다.
private void showFileChooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
filePath = data.getData();
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
schoolLogoUpload.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
선택한 이미지를 서버로 보내기 위해이 기능을 작성했습니다.
public String getPath(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":") + 1);
cursor.close();
cursor = getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
cursor.close();
return path;
}
public void uploadMultipart() {
//getting the actual path of the image
String path = getPath(filePath);
//Uploading code
try {
String uploadId = UUID.randomUUID().toString();
//Creating a multi part request
new MultipartUploadRequest(this, uploadId, UPLOAD_URL)
.addFileToUpload(path, "image") //Adding file
.setNotificationConfig(new UploadNotificationConfig())
.setMaxRetries(2)
.startUpload(); //Starting the upload
} catch (Exception exc) {
Toast.makeText(this, exc.getMessage(), Toast.LENGTH_SHORT).show();
}
}
이것은 서버 측에서 내 이미지 데이터를 수신하는 코드입니다.
if(Input::hasFile('image')) {
$file = Input::file('image');
$destination_path = "uploads";
$extension = Input::file('image')->getClientOriginalExtension();
$file_name = str_random(20). "." . $extension;
Input::file('image')->move($destination_path, $file_name);
}else{
return \Response::json([
"error"=>["message"=>"Please select the college logo"]
], 404);
이미지를 Base64
형식으로 변환했다고 가정 합니다. 기본적으로 Base64
형식은 이미지를 형식으로 변환 (또는 이미지 인코딩) String
합니다.
* Asynctask
당신을 위해 서버에 이미지를 업로드하는 작성 *
아래는 Asynctask
:-
private class AsyncUploadToServer extends AsyncTask<String, Void, String>
{
ProgressDialog pdUpload;
String imageData = "";
@Override
protected void onPreExecute() {
super.onPreExecute();
pdUpload = new ProgressDialog(MainActivity.this);
pdUpload.setMessage("Uploading...");
pdUpload.show();
}
@Override
protected String doInBackground(String... params)
{
imageData = params[0];
HttpClient httpclient = new DefaultHttpClient();
// URL where data to be uploaded
HttpPost httppost = new HttpPost(YOUR_URL_HERE);
try
{
// adding data
List<NameValuePair> dataToBeAdd = new ArrayList<>();
dataToBeAdd.add(new BasicNameValuePair("uploadedImage", imageData));
httppost.setEntity(new UrlEncodedFormEntity(dataToBeAdd));
// execute http post request
HttpResponse response = httpclient.execute(httppost);
Log.i("MainActivity", "Response: " + response);
}
catch (ClientProtocolException ex)
{
ex.printStackTrace();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
return "";
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
pdUpload.dismiss();
Toast.makeText(getApplicationContext(), "Image Uploaded Successfully..!!", Toast.LENGTH_SHORT).show();
}
}
이것이 당신을 도울 것입니다. :-)
추신 :-asynctask에 대해 잘 모르는 경우 https://developer.android.com/reference/android/os/AsyncTask.html 링크가 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다