首页 > 解决方案 > 如何将数字添加到 s3bucket 和 postgrsql 中的文件名

问题描述

我想知道如何在文件名中添加序列号。这样如果我上传一个新文件,例如flower.jpg,然后第二次或第三次上传相同的文件名,我会得到flower.jpg、flower(1).jpg 和flower(2).jpg 等。

如何在 python 和 s3 存储桶中编写这段代码。

我使用 python 和 s3 存储桶使用此代码为文件名添加了时间戳,但我想对其进行修改,以便它使用序列号。

 try:
    filename = filedata.name
    file_name, extension = splitext(filename)
    now = datetime.datetime.now()
    timestamp = int(datetime.datetime.timestamp(now))
    curntfilename = file_name + str(timestamp) + extension
    isexist = False
    for key in s3.list_objects(Bucket=settings.S3_BUCKET_BUCKET_NAME)['Contents']:

        folder = key['Key']
        if folder == (folder_path):
            isexist = True
            data = s3.upload_fileobj(filedata, settings.S3_BUCKET_BUCKET_NAME, '%s/%s' % (folder_path, curntfilename))
            return HttpResponse(json.dumps(data))
    if isexist == False:
        s3.upload_fileobj(filedata, settings.S3_BUCKET_BUCKET_NAME, '%s/%s' % (folder_path , curntfilename))

    print("Upload Successful")
    return curntfilename
except FileNotFoundError:
    print("The file was not found")
    return False
except NoCredentialsError:
    print("Credentials not available")
    return False


def upload_to_aws(filedata,filename,timestamp,company_id,folder_id,size,status,created_by,folder_path):
    s3 = boto3.client('s3', aws_access_key_id=settings.S3_BUCKET_BUCKET_AccessKeyId,
                      aws_secret_access_key=settings.S3_BUCKET_BUCKET_SecretAccessKey)

    try:
        file_name, extension = splitext(filename)
        curntfilename = file_name + str(timestamp) + extension
        isexist = False
        for key in s3.list_objects(Bucket=settings.S3_BUCKET_BUCKET_NAME)['Contents']:

标签: pythonpython-3.xpostgresqlamazon-s3pgadmin

解决方案


推荐阅读