#java #android #android-studio
Вопрос:
Я пытаюсь получить путь / URI к файлу ImageView для сохранения в базе данных AWS S3. Я пробовал использовать растровое изображение / рисование изображения, но я не могу получить путь. Есть ли какой-либо альтернативный способ получить путь / URI к файлу ImageView? Вот что я написал до сих пор, но это не работает:
private void uploadInputStream() {
Uri path = Uri.parse("com.example.project/" R.id.ivProfilePicture);
String imgPath = path.toString();
InputStream exampleInputStream = null;
try {
exampleInputStream = getContentResolver().openInputStream(path);
Amplify.Storage.uploadInputStream(
"ExampleKey",
exampleInputStream,
result -> Log.i("MyAmplifyApp", "Successfully uploaded: " result.getKey()),
storageFailure -> Log.e("MyAmplifyApp", "Upload failed", storageFailure)
);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Вот ошибка, которую я получаю, используя приведенный выше код :
W/System.err: java.io.FileNotFoundException: Resource does not exist: android.resource://com.example.project/2131362045
W/System.err: at android.content.ContentResolver.openInputStream(ContentResolver.java:1180)
at com.example.project.VerifySignUpActivity.uploadInputStream(VerifySignUpActivity.java:126)
at com.example.project.VerifySignUpActivity.access$000(VerifySignUpActivity.java:32)
at com.example.project.VerifySignUpActivity$1$1$1.accept(VerifySignUpActivity.java:82)
at com.example.project.VerifySignUpActivity$1$1$1.accept(VerifySignUpActivity.java:73)
at com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin$5.lambda$onResult$0(AWSCognitoAuthPlugin.java:387)
at com.amplifyframework.auth.cognito.-$Lambda$AWSCognitoAuthPlugin$5$KyBT3ChKClMRGiVUgh9F0DBkIxU.call(Unknown Source:4)
at com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin$23.onResult(AWSCognitoAuthPlugin.java:1149)
at com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin$23.onResult(AWSCognitoAuthPlugin.java:1145)
at com.amazonaws.mobile.client.internal.InternalCallback.call(InternalCallback.java:75)
at com.amazonaws.mobile.client.internal.InternalCallback.onResult(InternalCallback.java:62)
W/System.err: at com.amazonaws.mobile.client.AWSMobileClient$11$1.onSuccess(AWSMobileClient.java:1911)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.getSession(CognitoUser.java:1020)
at com.amazonaws.mobile.client.AWSMobileClient$11.run(AWSMobileClient.java:1904)
at com.amazonaws.mobile.client.internal.InternalCallback$1.run(InternalCallback.java:101)
at java.lang.Thread.run(Thread.java:919)
Ответ №1:
Эй, вот как я это делаю, попробуй
private void uploadInputStream() {
Uri path = Uri.parse("com.example.project/" R.id.ivProfilePicture);
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
InputStream exampleInputStream = null;
File file = null;
try {
exampleInputStream =
getContentResolver().openInputStream(Uri.parse(bitmap));
file = new File(String.valueOf(inputStream)); //upload the file
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Дай мне знать, как все идет