Привет, я изо всех сил пытаюсь найти способ загрузить файл непосредственно с камеры телефона Android на мой веб-сервер (принять multipart).
В соответствии с правилами, установленными в моей стране для приложений fintech, мне не разрешается запрашивать у пользователя разрешения на запись и чтение, поэтому мне приходится загружать его сразу после съемки фотографий без сохранения в хранилище.
Это то, что у меня сейчас есть.
profileCameraImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(areAllPermissionsGranted()) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
profileFile = new File(getActivity().getApplicationContext().getExternalFilesDir(
android.os.Environment.DIRECTORY_PICTURES).getAbsolutePath() + File.separator + "profile.jpg");
profileUri = FileProvider.getUriForFile(getActivity().getApplicationContext(),
authorities,
profileFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, profileUri);
startActivityForResult(takePictureIntent, PICK_CAMERA_PROFILE);
}
Помимо метода создания нескольких частей, я просто передал сюда файл профиля, полученный из приведенного выше кода
public MultipartBody.Part prepareFilePartFromCamera(String partName, File file) {
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData(partName, file.getName(), requestFile);
return body;
}
Каждый раз, когда я пытался загрузить файл на свой веб-сервер, он всегда сообщаетмне, что он не может принять формат файла.Иногда я видел, что мне нужно разрешение на запись в моей logcat.
Большое спасибо за вашу помощь