如何在没有写或读权限的情况下直接从相机上传文件并将其作为多部分发送



嗨,我正在努力寻找一种方法,将文件直接从android手机摄像头上传到我的网络服务器(接受多部分(。

由于我所在国家对金融科技应用程序的规定,我不允许向用户请求写入和读取存储权限,所以我必须在拍摄完照片后直接上传,而不将其保存在存储中。

这就是我目前拥有的。

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);
}    

除了多部分创建方法外,我刚刚将从上面的代码中获得的profileFile传递给这里的

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;
}

每次我试图上传到我的网络服务器,它总是告诉我它不能接受文件格式。有时我在日志中看到我需要写权限。

非常感谢您的帮助

从外部存储读取和写入需要权限,这是一种危险的权限,需要用户在运行时接受。

解决方案是将图像保存到internal storage,而不是外部存储器。这不需要用户的权限,您可以将其用作文件并上传到服务器。此链接显示如何将位图保存并读取到内部存储器。

最新更新