Android отправляет изображения на сервер

Я пытаюсь отправить изображения, снятые со своего телефона, на сервер, с кодом ниже, приложение вылетает, когда я пытаюсь загрузить фотографию, снятую с моего телефона, я знаю, что код работает, потому что я могу загружать изображения, загруженные на мой Телефон.

   @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMG && 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();

String fileNameSegments[] = picturePath.split("/");
fileName = fileNameSegments[fileNameSegments.length - 1];

Bitmap myImg = BitmapFactory.decodeFile(picturePath);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
// Must compress the Image to reduce image size to make upload easy
myImg.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byte_arr = stream.toByteArray();
// Encode Image to String
encodedString = Base64.encodeToString(byte_arr, 0);

}
}

код, который загружает

   public void uploadImage() {

RequestQueue rq = Volley.newRequestQueue(this);
String url = "http://serverwebsite.com/image.php";
Log.d("URL", url);
StringRequest stringRequest = new StringRequest(Request.Method.POST,
url, new Response.Listener<String>() {

@Override
public void onResponse(String response) {
try {
Log.e("RESPONSE", response);
JSONObject json = new JSONObject(response);

Toast.makeText(getBaseContext(),
"The image is upload", Toast.LENGTH_SHORT)
.show();

} catch (JSONException e) {
Log.d("JSON Exception", e.toString());
Toast.makeText(getBaseContext(),
"Error while loadin data!",
Toast.LENGTH_LONG).show();
}

}

}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("ERROR", "Error [" + error + "]");
Toast.makeText(getBaseContext(),
"Cannot connect to server", Toast.LENGTH_LONG)
.show();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();

params.put("image", encodedString);
params.put("filename", fileName);

return params;

}

};
rq.add(stringRequest);
}

-1

Решение

я надеюсь, что этот код поможет вам

public void sendImage(MediaType mediaType)
{
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addPart(
Headers.of("Content-Disposition",
"form-data; name=\"file\"; filename=" + '"'
+ name + '"'),
RequestBody.create(mediaType, new File(getFileAdress()
))).build();
final String credential = Credentials.basic(userName, pass);
Request request = new Request.Builder()
.header("Authorization", credential)
.url(WebServiceAddress())
.post(requestBody).build();
try {
Response response = client.newCall(request).execute();
int code=response.code();
String out = response.body().string();

if (response.isSuccessful()) {

} else {

} catch (Exception ex) {

}

}

Это адреса моей библиотеки, которые я использую для изменения размера фотографий:
https://github.com/alireza-87/ImageHelper

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector