You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:35:23