Как загрузить несколько раз изображение в хранилище firebase? - PullRequest
0 голосов
/ 17 июня 2020

Я хотел бы знать, можно ли загружать несколько раз одно и то же изображение, взятое из доступных для рисования изображений в хранилище firebase, таким образом, чтобы в хранилище изображение появлялось несколько раз под разными именами. Что я делаю:

imageUri=Uri.parse("android.resource://com.example.project/"+R.drawable.error);
riversRef = storageRef.child("images/" + imageUri.getLastPathSegment()+ "_" + System.currentTimeMillis());
uploadTask = riversRef.putFile(imageUri);

, но каждый раз, когда я использую это в хранилище, не появляются новые изображения, только первые. Вероятно, потому что имея одно и то же имя в хранилище (2131230900) и являясь одним и тем же изображением, хранилище игнорирует его. Результат, который я хочу получить, заключается в том, что у меня есть два идентичных изображения, взятых из чертежа моего проекта, но в хранилище они получаются как 2 разных имени

1 Ответ

0 голосов
/ 17 июня 2020

Ваш riversRef - это ссылка на указанное c местоположение / файл в облачном хранилище. Если вы вызываете putFile несколько раз по одной и той же ссылке, вы пишете в одно и то же место несколько раз, поэтому вы действительно получите только один файл

Чтобы записать несколько уникальных файлов, вы необходимо создать отдельную уникальную ссылку для каждого файла. Что-то вроде:

riversRef = storageRef.child("images/" + file.getLastPathSegment() + "_" + System.currentTimeMillis());

Добавляя здесь метку времени к имени файла в хранилище, мы получаем уникальные ссылки, если вы вызываете это несколько раз. В качестве альтернативы также будет работать что-то вроде этого:

for (int i=0; i < 10; i++) {
    riversRef = storageRef.child("images/" + file.getLastPathSegment() + "_" + i);
    uploadTask = riversRef.putFile(file);
}

Итак, теперь мы просто добавляем счетчик к каждому имени файла в облачном хранилище.

...