如何查看Angular上传至Django REST Framework的多文件内容?
在Django REST Framework中查看上传文件的内容
嘿,我来帮你搞定这个问题!你打印出来的[object File]其实是Django对上传文件对象的默认字符串展示,要查看每个文件的实际内容,咱们可以直接读取这些文件对象的内容,具体方法分几种情况:
1. 读取文本类文件的内容(如.txt、.json等)
如果上传的是文本格式的文件,你可以通过read()方法读取内容,再解码为字符串。记得读完后重置文件指针,方便后续的保存或其他操作:
@list_route(methods=['PUT']) def uploads(self, request): for file_item in request.data.getlist('files'): # 读取文件内容并解码为UTF-8字符串(可根据文件实际编码调整) file_content = file_item.read().decode('utf-8') print(f"=== 文件: {file_item.name} ===") print(file_content) # 重置文件指针到开头,避免后续操作无法读取内容 file_item.seek(0) return Response(0)
2. 处理二进制文件(如图片、视频等)
对于二进制文件,直接打印字符串意义不大,你可以查看文件的元数据,或者读取二进制内容:
@list_route(methods=['PUT']) def uploads(self, request): for file_item in request.data.getlist('files'): print(f"文件名: {file_item.name}") print(f"文件大小: {file_item.size} 字节") print(f"文件类型: {file_item.content_type}") # 若需要读取二进制内容(比如做校验) binary_content = file_item.read() # 示例:打印前100字节的十六进制值 print(f"前100字节内容: {binary_content[:100].hex()}") # 同样重置文件指针 file_item.seek(0) return Response(0)
3. 处理大文件的注意事项
如果上传的文件很大,一次性读取整个文件会占用过多内存,建议分块读取:
@list_route(methods=['PUT']) def uploads(self, request): chunk_size = 4096 # 每次读取4KB for file_item in request.data.getlist('files'): print(f"=== 分块读取文件: {file_item.name} ===") while chunk := file_item.read(chunk_size): # 处理每一块内容,比如文本文件解码后打印 print(chunk.decode('utf-8')) # 二进制文件则直接处理chunk # process_chunk(chunk) # 重置指针 file_item.seek(0) return Response(0)
内容的提问来源于stack exchange,提问作者Bernard 'Beta Berlin' Parah
相关产品推荐
相关产品推荐

