Как отправить изображение на сервер? - PullRequest
0 голосов
/ 09 января 2020

Я хочу отправить изображение на свой бэкэнд, но не могу и не знаю, потому что. Бэкэнд делается с помощью фреймворка Express, также я протестировал функцию, и она работает, но при отправке с мобильного телефона не работает.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO: 12/27/2019 obtener la infomrmacion de la imagen
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK){
        Uri photoUri = data.getData();
        user_Img.setImageURI(photoUri);
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor actualimagecursor = managedQuery(photoUri, proj,null, null, null);
        int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); actualimagecursor.moveToFirst();
        String img_path = actualimagecursor.getString(actual_image_column_index);
        Log.i("img_path", img_path);
        String [] separar = img_path.split("/");
        String nameImg = separar[6];
        Log.i("nameImg", nameImg);
        File file = new File(img_path);

        if (file.exists()){
            RequestBody requestFile = RequestBody.create(MediaType.parse("image/*"),file);
            procfile = MultipartBody.Part.createFormData("photo",file.getName(), requestFile);
        }

        router = conexion.getApiService();
        Call<ModelsMensajes> modelsMensajesCall = router.routerCrearCuenta(procfile);
        modelsMensajesCall.enqueue(new Callback<ModelsMensajes>() {
            @Override
            public void onResponse(Call<ModelsMensajes> call, Response<ModelsMensajes> response) {
                if (response.isSuccessful()){
                    String data = response.body().getMessage();
                    Toast.makeText(RegisterActivity.this, "" + data, Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onFailure(Call<ModelsMensajes> call, Throwable t) {

            }
        });

    }
}

 @Multipart
@POST("user/test")
Call<ModelsMensajes> routerCrearCuenta(@Part MultipartBody.Part photo);

Это функция, которая имеет бэкэнд. Маршрут и json, что обратно.

router.post('/test', multipartMiddleware, test);


export async function test(req,res){
const urlPhoto = req.files.photo;

res.json({
message: urlPhoto
})

}

{
  "message": {
  "fieldName": "photo",
  "originalFilename": "icons8-docker-48.png",
  "path": "src/photos/B90paORGrFnWsr4jl-vVvUJa.png",
   "headers": {
     "content-disposition": "form-data; name=\"photo\"; filename=\"icons8-docker-48.png\"",
     "content-type": "image/png"
   },
   "size": 1190,
   "name": "icons8-docker-48.png",
   "type": "image/png"
  }
}
...