Ниже представлен основной код Фрагмента
public class UploadPhotoo extends Fragment {
TextView upload_id_tv, Image_Upload_txt;
ImageView camera_uploadPhoto,Image_main, gallery_uploadPhoto,delete_from_gallery;
Bitmap photo;
private static final int CAMERA_REQUEST = 1000;
private static final int GALLERY_REQUEST = 2000;
String imageBitmaped;
private Method method;
String encodedImage;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_upload_photoo, container, false);
gallery_uploadPhoto = rootView.findViewById(R.id.upload_from_gallery);
gallery_uploadPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent GalleryIntent = new Intent(Intent.ACTION_PICK);
GalleryIntent.setType("image/*");
// GalleryIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(GalleryIntent, GALLERY_REQUEST);
}
});
return rootView;
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
// super.onActivityResult(requestCode, resultCode, data);
// if (requestCode == CAMERA_REQUEST ){
// photo =(Bitmap) data.getExtras().get("data");
// Image_main.setImageBitmap(photo);
// }
// else if(resultCode == Activity.RESULT_OK && requestCode == GALLERY_REQUEST
// && data != null && data.getData() != null) {
// photo =(Bitmap) data.getExtras().get("data");
if(resultCode == Activity.RESULT_OK)
switch (requestCode){
case GALLERY_REQUEST:
Uri selectedImage = data.getData();
try {
InputStream inputStream = getActivity().getContentResolver().openInputStream(selectedImage);
photo = BitmapFactory.decodeStream(inputStream);
Image_main.setImageBitmap(photo);
getStringImage(photo);
sendImageToServer();
Image_Upload_txt.setVisibility(View.VISIBLE);
} catch (IOException e) {
Log.i("TAG", "Some exception " + e);
}
break;
case CAMERA_REQUEST:
photo =(Bitmap) data.getExtras().get("data");
Image_main.setImageBitmap(photo);
Image_Upload_txt.setVisibility(View.VISIBLE);
break;
}
}
//to get image bitmap
private void getStringImage(Bitmap bmp) {
Log.e("TAG","Bitmap called");
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
byte[] imageByte = byteArrayOutputStream.toByteArray();
encodedImage = android.util.Base64.encodeToString(imageByte,Base64.DEFAULT);
}
//use volley
private void sendImageToServer()
{
Log.e("TAG","sendImageToServer called");
String sid = method.pref.getString(method.profileId,null);
String URL ="https://starsacademies.com/starapi/starapi/profile_upload";
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("Response", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getContext(),error.toString(),Toast.LENGTH_SHORT).show();
Log.e("TAG","ERROR: "+error.toString());
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError{
// String image = getStringImage(photo);
Map<String,String> params = new HashMap<String, String>();
params.put("userfile", encodedImage);
params.put("student_id", sid);
Log.e("TAG: userfile",encodedImage );
Log.e("TAG: student_id",sid);
return params;
}
};
stringRequest.setRetryPolicy(new RetryPolicy() {
@Override
public int getCurrentTimeout() {
return 40000;
}
@Override
public int getCurrentRetryCount() {
return 40000;
}
@Override
public void retry(VolleyError error) throws VolleyError {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(stringRequest);
}
}
Информация об API:
API: https://starsacademies.com/starapi/starapi/profile_upload
Method: POST
PARAMETERS:
userfile (File),
student_id (String)
После успешного загрузив, вы можете получить изображение из Get API.
API: https://starsacademies.com/starapi/starapi/get_student_image/student_id/1
Eg:- https://starsacademies.com/starapi/starapi/get_student_image/2448/1
** Примечание. API отлично работает в почтальоне.
введите описание изображения здесь
Но когда я пытаюсь запустить в студии android, используя приведенный выше код. Это даст мне следующие ошибки. **
D/Volley: [6174] BasicNetwork.logSlowRequests: HTTP response for request=<[ ] https://starsacademies.com/starapi/starapi/profile_upload 0x1ce01b5c NORMAL 1> [lifetime=5870], [size=196], [rc=200], [retryCount=40000]
2020-07-14 07:50:21.644 31898-31898/com.app.sfaelearning E/Response: {
"UPLAODIMAGE": [
{
"success": 0,
"data": "<p>You did not select a file to upload.</p>",
"message": "profile image upload failed"
}
]
}
Похоже, что приведенный выше код не может подобрать изображение. Я не знаю, что происходит, но я следил за множеством туториалов на YouTube, и они используют тот же код ... Помогите мне, пожалуйста .. это уже занимает у меня 3-4 дня ...