Загрузка файла из Firebase Storage меняет его имя
Всякий раз, когда я загружаю файл из хранилища Firebase на устройство Android, имя файла меняется, например, с filename.pdf, например, filename-13557732.pdf
Есть ли способ предотвратить это изменение? Почему это происходит?
File directory = new File(Environment.getExternalStoragePublicDirectory
(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath());
final File localFile = File.createTempFile(filename,".pdf", directory);
mStorageReference.child(filename).getFile(localFile)
Также, случайно, есть ли способ скачать файл с URL (который у меня уже есть), а не с именем?
1 ответ
Q: Как изменить имя по умолчанию в createTempFile?
Ответ: вы не можете.
Если бы вы могли, вы бы аннулировали гарантии createTempFile, которые, согласно javadoc:
Файл, обозначенный возвращенным абстрактным путем, не существовал до того, как был вызван этот метод, и ни этот метод, ни какой-либо из его вариантов не будут возвращать тот же абстрактный путь снова в текущем вызове виртуальной машины. Если вас волнует имя файла, возможно, createTempFile() не является подходящим способом для создания файла.
Вы можете узнать, что представляет собой системный каталог временных файлов, и создать там свой собственный файл, но вам придется самостоятельно управлять возможностью конфликта имен файлов.
Альтернативная стратегия использования createTempFile зависит от того, для чего вы используете файл и почему вы заботитесь о том, как он называется, чего вы не указали.
Q: Есть ли способ скачать это, используя URL.
Ответ: да.
Есть разные способы сделать это. Проверьте эту документацию
Проще говоря.
private FirebaseStorage storageRef = FirebaseStorage.getInstance();
storageRef.child("users/me/profile.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
// Got the download URL for 'users/me/profile.png'
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
Вы можете использовать, Пикассо или Glide. Или просто создайте свой собственный метод передачи URL. Это может сказать URI, но это действительно URL.