0

でアップロードされたファイルを受け入れる 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実際のリクエストの先頭から読み取りを開始します。これにより、MD5 チェックサムが失敗します。これは、何かがうまくいかないことを知っているため、偶然にも良いことです。

生のリクエストだけでなく、実際のリクエスト本文を読み取る方法はありますか?

4

1 に答える 1

0

私が行っていた要求は悪いものでした。それが私の問題でした:

Content-MD5\n: XXXXXXXXXXXXXXXXXXXXX

この問題が発生している場合は、リクエストを確認してください。

于 2013-11-12T06:44:18.153 に答える