如何在Django中获取上传的zip文件并保存其内容(mp3文件)?

时间:2015-04-21 16:14:55

标签: django django-models django-forms zip mp3

我是Django的新手,我试图实现上面提到的......但是我无法在Django模型中获得一些AudioField或MediaField,或多或少有可能是ImageField。

更好地解释我想要的东西:

我想向用户提供一个表格,他可以填写一些信息,并可以上传包含mp3文件的zip文件。然后,在服务器中,我想获取此zip文件,解压缩,获取所有mp3内部并获取有关这些文件的信息(名称,艺术家,持续时间等)并将其保存在我的模型中(音乐)。

是否有一些教程解释如何实现或解释如何使用zip文件和mp3文件的链接?

2 个答案:

答案 0 :(得分:4)

我认为您需要的是以下两个链接:

Python标准库(2.x.x和3.x.x)包含用于处理zip文件的模块。 https://docs.python.org/3/library/zipfile.html

即:

with ZipFile('music_files.zip') as zip_file:
    # get the list of files
    names = zip_file.namelist()
    # handle your files as you need. You can read the file with:
    with zip_file.open(name) as f:
        music_file = f.read()
        # retrieve music_file metadata here

至于mp3文件元数据的提取,有一个库:http://eyed3.nicfit.net

希望它会对你有所帮助。

答案 1 :(得分:1)

您要查找的字段是FileField,它与其引用的文件类型无关。

Python的标准库包含一个用于处理Zip存档的包:zipfile

您可以使用eyeD3库从MP3文件中提取ID3元数据。