programing

고유/임의 이름으로 파일 저장

randomtip 2023. 6. 10. 16:44
반응형

고유/임의 이름으로 파일 저장

새로운 Firebase API를 사용하면 클라이언트 코드에서 클라우드 스토리지로 파일을 업로드할 수 있습니다.다음 예제에서는 업로드 중에 파일 이름이 알려져 있거나 정적인 것으로 가정합니다.

// Create a root reference
var storageRef = firebase.storage().ref();
    
// Create a reference to 'mountains.jpg'
var mountainsRef = storageRef.child('mountains.jpg');
    
// Create a reference to 'images/mountains.jpg'
var mountainImagesRef = storageRef.child('images/mountains.jpg');

또는

// File or Blob, assume the file is called rivers.jpg
var file = ...
    
// Upload the file to the path 'images/rivers.jpg'
// We can use the 'name' property on the File API to get our file name
var uploadTask = storageRef.child('images/' + file.name).put(file);

사용자가 자신의 파일을 업로드하면 이름 충돌이 발생합니다.파이어베이스가 직접 정의하지 않고 파일 이름을 만들도록 할 수 있는 방법은 무엇입니까?그런 것이 있습니까?push()고유한 스토리지 참조를 생성하기 위한 데이터베이스 기능

Firebase 스토리지 제품 관리자:

TL;DR: UUID 생성기(Android(UUID) 및 iOS(NSUUID)에 내장된 UUID 생성기를 사용합니다. JS에서는 GUID/UID를 JavaScript에서 생성하시겠습니까?)를 사용할 수 있습니다. 그런 다음 보존하려면 파일 확장명을 추가합니다('에서 file.name 를 선택하고 마지막 세그먼트를 가져옵니다).

우리는 개발자들이 어떤 버전의 고유한 파일을 원하는지 알지 못했고(아래 참조), 이를 위한 사용 사례가 매우 많기 때문에 개발자들에게 선택권을 맡기기로 결정했습니다.

images/uuid/image.png   // option 1: clean name, under a UUID "folder"
image/uuid.png          // option 2: unique name, same extension
images/uuid             // option 3: no extension

하지만 제가 보기에 이것은 우리의 문서에서 설명하는 것이 합리적인 것 같습니다. 그래서 저는 내부적으로 버그를 제출하여 문서화하겠습니다. :)

이것은 다트를 사용하는 사람들을 위한 솔루션입니다.

다음을 사용하여 현재 날짜 및 시간 스탬프를 생성합니다.

var time = DateTime.now().millisecondsSinceEpoch.toString();

이제 다음을 사용하여 파일을 파이어베이스 저장소에 업로드합니다.

await FirebaseStorage.instance.ref('images/$time.png').putFile(yourfile);

다음을 사용하여 다운로드 가능한 URL을 얻을 수도 있습니다.

var url = await FirebaseStorage.instance.ref('images/$time.png').getDownloadURL();

첫 번째 설치 UUID -npm i uuid

그런 다음 파일 참조를 다음과 같이 정의합니다.

import { v4 as uuidv4 } from "uuid";

const fileRef = storageRef.child(
            `${uuidv4()}-${Put your file or image name here}`
          );

그 후, 파일과 함께 업로드합니다.fileRef

fileRef.put(Your file)

Android(Kotlin)에서 1970년 이후 사용자 UID와 밀리초를 결합하여 해결했습니다.

val ref = storage.reference.child("images/${auth.currentUser!!.uid}-${System.currentTimeMillis()}")

아래 코드는 @Mike McDonald의 답변에 있는 파일 구조의 조합이고, 현재 날짜 타임스탬프는 @Aman Kumar Singh의 답변에 있고, @Damien의 답변에 있는 사용자 uid: 저는 그것이 독특한 ID를 제공하면서 파이어베이스 저장 화면을 더 읽기 쉽게 만든다고 생각합니다.

Reference ref = firebaseStorage
    .ref()
    .child('videos')
    .child(authController.user.uid)
    .child(DateTime.now().millisecondsSinceEpoch.toString());

언급URL : https://stackoverflow.com/questions/37444685/store-files-with-unique-random-names

반응형