Загрузите захват изображения камерой с дооснащением - PullRequest
0 голосов
/ 27 января 2020

Итак, я хочу загрузить захват изображения с помощью поля id на моем сервере, используя многокомпонентную модификацию, но это приводит к ошибке, как будто я неправильно пишу правильный составной интерфейс, потому что журнал ошибок отображается так:

Содержание-Расположение: форма-данные; name = "ID_FSALES" Content-Transfer-Encoding: двоичный тип содержимого: application / json; charset = UTF-8 Content-Length: 12 "2001160001" --4a264851-20af-4bf8-8e85-07baf2191fb1-- -> END POST (1676-байтовое тело) W / Looper: Slow Looper main: doFrame опаздывает на 512 мс, потому что из 4 сообщений, сообщение 1 заняло 175 мс (h = android .view. Хореограф $ FrameHandler c = android .view.Choreographer $ FrameDisplayEventReceiver), сообщение 4 заняло 319 мс (позднее = 198мс h = android .app.ActivityThread $ H w = 159) D / OkHttp: <- 403 Запрещено <a href="http://192.168.43.140/flagship/api/user/uploadktp" rel="nofollow noreferrer">http://192.168.43.140/flagship/api/user/uploadktp (1063 мс). Дата: Пн, 27 января 2020 17:58:31 GMT Сервер: Apache / 2.4.39 (Win64) OpenSSL / 1.0.2r PHP / 7.1.29 X-Powered-By: PHP / 7.1.29 Set-Cook ie: ci_session = aajgtvpbqb3p08ob6t1hsv3j3v; истекает = понедельник, 27 января-2020 19:58:31 по Гринвичу; Max-Age = 7200; Путь = /; Срок действия HttpOnly истекает: четверг, 19 ноября 1981 г. 08:52:00 GMT Cache-Control: нет хранилища, нет кэша, необходимо подтвердить заново Прагма: нет кэша Content-Length: 45 Keep-Alive: время ожидания = 5, max = 100 Соединение: Keep-Alive Content-Type: application / json; charset = utf-8 D / OkHttp: {"status": false, "message": "Upload KTP Gagal"} <- END HTTP (45-байтовое тело) </p>

this моя функция загрузки:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
            Bitmap mphoto = (Bitmap) data.getExtras().get("data");
            //panggil method uploadImage
            uploadImage(mphoto);
        }
    }

    private File createTempFile(Bitmap bitmap) {
        File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES)
                , System.currentTimeMillis() +"_image.jpg");
        ByteArrayOutputStream bos = new ByteArrayOutputStream();

        bitmap.compress(Bitmap.CompressFormat.WEBP,0, bos);
        byte[] bitmapdata = bos.toByteArray();
        //write the bytes in file

        try {
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(bitmapdata);
            fos.flush();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return file;
    }

    private void uploadImage(Bitmap gambarBitmap) {

        File file = createTempFile(gambarBitmap);
        RequestBody reqFile = RequestBody.create(MediaType.parse("image/*"), file);
        MultipartBody.Part body = MultipartBody.Part.createFormData("FOTO_KTP", file.getName(), reqFile);

        ApiInterface apiInterface = ApiClient.create();
        Call<ResponseBody> call = apiInterface.uploadImage(body, idSales);
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                Toast.makeText(CaptureKtp.this, "Success", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Toast.makeText(CaptureKtp.this, "Gagal", Toast.LENGTH_SHORT).show();
            }
        });
    }

    public void takeImageFromCamera() {
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent, CAMERA_REQUEST);
    }

и это интерфейс класс:

@Multipart
    @POST("api/user/uploadktp")
    Call<ResponseBody> uploadImage(
            @Part MultipartBody.Part file,
            @Part ("ID_FSALES") String idSales
    );
...