mino如何上傳同名的圖片

槑孒發表於2024-08-09

在MinIO中,如果在同一路徑下上傳同一張圖片(即使用相同的物件名稱),新的上傳會覆蓋現有的物件。

這是因為MinIO和S3的儲存機制是基於物件名稱的鍵值對儲存,路徑實際上是物件名稱的一部分。

示例:

假設上傳了一張圖片到 Work/small/image.jpg,然後再次上傳另一張圖片到同樣的路徑 Work/small/image.jpg,第二次上傳會覆蓋第一次上傳的檔案。

解決方法:

如果希望儲存同一張圖片的多個版本,可以考慮以下方法:

  1. 使用唯一的物件名稱
    給每個上傳的檔案使用一個唯一的名稱。例如,可以在檔名中新增時間戳或UUID來區分不同的檔案版本:

    import uuid
    
    unique_name = f"Work/small/{uuid.uuid4()}_{image_name}"
    minio_client.fput_object(bucket_name, unique_name, image_path)
    
  2. 啟用版本控制
    MinIO支援物件版本控制,但預設情況下是關閉的。如果你啟用版本控制,即使你上傳了同一張圖片到相同的路徑,MinIO也會為每次上傳生成一個新版本,而不是覆蓋舊版本。這需要配置MinIO並開啟版本控制。

結論

  • 預設行為:在相同路徑上傳相同名稱的檔案會覆蓋現有檔案。
  • 防止覆蓋:可以透過給檔名新增唯一標識或啟用版本控制來避免檔案被覆蓋。

相關文章