пожалуйста, добавьте. (точка) localFile = File.createTempFile ("images", ".jpg", getExternalFilesDir (null));
зка изображения и его сохранение на SD-карте не работает. Я не знаю, где я иду не так.
Этот код предназначен для загрузки изображения в хранилище Firebase.
// Get a reference to store file at photos/<FILENAME>
StorageReference photoRef = mPhotosStorageReference.child(selectedImageUri.getLastPathSegment());
//Upload file to Firebase Storage
photoRef.putFile(selectedImageUri).addOnSuccessListener(this, new OnSuccessListener < UploadTask.TaskSnapshot > () {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Log.d("TAG", "in Success method of Uploading file");
// When the image has successfully uploaded, we get its download URL
@SuppressWarnings("VisibleForTests")
Uri downloadUrl = taskSnapshot.getDownloadUrl();
// Set the download URL to the message box, so that the user can send it to the database
Message message = new Message(null, userName, downloadUrl.toString());
messagesDatabaseReference.push().setValue(message);
mProgressBar.setVisibility(View.GONE);
Toast.makeText(MainActivity.this, "Upload Successful", Toast.LENGTH_SHORT).show();
}
});
Обратите внимание, что я использовал следующее для создания локального файла изображения:
File localFile = null;
try {
localFile = File.createTempFile("images", "jpg", getExternalFilesDir(null));
Log.d("TAG", "local file: " + localFile.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}
Вот беру то же самоеphotoRef
чтобы загрузить это конкретное изображение, загружаемое пользователем. Это правильный способ сделать?
photoRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener < FileDownloadTask.TaskSnapshot > () {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
// Local temp file has been created
Log.d("TAG", "Entered onSuccess in Download File*");
Toast.makeText(MainActivity.this, "Download Success", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
Log.d("TAG", "Entered onFailure in Download File*");
Toast.makeText(MainActivity.this, "Download Failed", Toast.LENGTH_SHORT).show();
}
});
Я записал значениеphotoRef
а такжеlocal file
, Это показывало на моемLogCat.
Photoref: gs://wecare-8a15d.appspot.com/photos/image:27410
local file: /storage/emulated/0/Android/data/com.pc.wecare/files/images2116155570jpg
Это исключение, которое я получил, когда использовал исключение. GetMessage ();
Excecption message: Object does not exist at location.
Это детали изLogCat, Это видно из того, что вы взяли фотографию из галереи и загрузили ее в Firebase Storage:
05-03 11:25:11.600 8577-8577/com.pc.wecare D/TAG: In Main Activity Pause Method
05-03 11:25:20.277 8577-8577/com.pc.wecare D/TAG: Entered OnActivity photo picker method
05-03 11:25:20.277 8577-8577/com.pc.wecare D/TAG: onActivityResult, requestCode: 2, resultCode: -1
05-03 11:25:20.278 8577-8577/com.pc.wecare D/TAG: onActivityResult, RC_PHOTO_PICKER: 2, RESULT_OK: -1
05-03 11:25:20.310 8577-8577/com.pc.wecare D/TAG: local file: /storage/emulated/0/Android/data/com.pc.wecare/files/images306346474jpg
05-03 11:25:20.310 8577-8577/com.pc.wecare D/TAG: Photoref: gs://wecare-8a15d.appspot.com/photos/image:27301
05-03 11:25:20.313 8577-8577/com.pc.wecare D/TAG: In Main Activity Resume Method
05-03 12:58:14.730 31570-31570/com.pc.wecare D/TAG: Entered onFailure in Download File*
05-03 12:58:17.234 31570-31570/com.pc.wecare D/TAG: in Success method of Uploading file