在PUT上传中仅读取请求正文

时间:2013-11-12 04:26:41

标签: django put

我有一个Django视图,它接受PUT上传的文件。我已经创建了自己的上传处理程序,并按照这样的方式处理数据:

handler = MD5ChecksumUploadHandler()
handler.new_file(field_name="file", file_name="unknown",
                 content_type=request.META.get('CONTENT_TYPE', 'application/octet-stream'),
                 content_length=int(request.META.get('CONTENT_LENGTH', 0)))

upload_size = 0

while True:
    # read the request body in chunks
    chunk = request.read(handler.chunk_size)

    if chunk:
        handler.receive_data_chunk(chunk, start=None)
        upload_size += len(chunk)
    else:
        break

# return the MD5ChecksumUploadedFile
return handler.file_complete(upload_size)

正如我发现的那样,request.read方法开始在实际请求的开头读取,而不是请求 body 。这导致我的MD5校验和失败,这是偶然的好,因为我知道出了问题。

我有没有办法阅读实际的请求主体而不仅仅是原始请求?

1 个答案:

答案 0 :(得分:0)

我提出的请求很糟糕,这就是我的问题所在:

Content-MD5\n: XXXXXXXXXXXXXXXXXXXXX

如果您遇到此问题,请检查您的请求。