提取 zip 文件并将其存储到图像或文件字段
Posted
技术标签:
【中文标题】提取 zip 文件并将其存储到图像或文件字段【英文标题】:extracting zip file and storing it to image or file field 【发布时间】:2020-08-05 14:44:24 【问题描述】:在我的 django 项目中,我希望用户上传一个 epub 文件(基本上是一个 rar 文件)。我想提取 epub 文件以获取该 epub 的封面并将其保存到图像字段或文件字段
我的想法是使用 zipfile 模块提取文件作为二进制数据,但是如何将二进制数据转换为图像字段或二进制字段
@api_view(['POST'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def create_book(request, *args, **kwargs):
serializer = Book_serialzier(
data=request.data, context="user": request.user)
serializer.initial_data["title"] = serializer.initial_data.get(
"book").name.split(".epub")[0]
serializer.initial_data["user"] = request.user.id
#here i started extracting
with zipfile.ZipFile(serializer.initial_data.get("book"), 'r') as my_zip:
if "cover.jpeg" in my_zip.namelist():
serializer.initial_data["cover"] = my_zip.read("cover.jpeg")
if(serializer.is_valid(raise_exception=True)):
book = serializer.save()
return Response(serializer.data)
【问题讨论】:
【参考方案1】:根据您的问题陈述,我了解到您想从 epub 文件中提取封面图像,然后将其保存到您的字段中。
serializer.initial_data["cover"] = my_zip.read("cover.jpeg")
这一行读取字节串并将其保存到您的“封面”字段中。通过以二进制模式写入文件,您可以轻松地将该字节字符串转换为图像。
with open('cover_image.jpg','wb') as imageFile:
imageFile.write(fileData) #fileData is what you will read from "cover" field
处理图像的最佳方法是将其转换为 base64 格式
你可以像this一样轻松地做到这一点
要将base64字符串转换回图像,您可以执行this
【讨论】:
以上是关于提取 zip 文件并将其存储到图像或文件字段的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JSON 字段上应用正则表达式以从中提取某些值并将其存储到 Mule Studio 的 PostgreSQL Dataabse 中?
我们如何使用文件系统中的某些动态字段搜索存储在 zip 文件中的 xml 文件?
如何使用android [关闭]获取RealmObject中的最后一个修改过的RealmObject或字段