私のプロジェクトはDjangoで作成したものの、ユーザーがzipファイルをアップロードできるようなフォームのページがあります。 このzipファイルから、私はそれを開いてそこからファイルを読みます。すべてのケースを検証するユニットテストで私が始めた : - 未.zip拡張子
- zipfile.is_zipfile()
リターン偽
- 私は内部
を読みたいファイルが見つかりません -
は内部ファイルがDjangoユニットアップロードzipファイル
、私は、各エラーごとに異なるファイルを作成し、ようにdjango.test.Client
を使用して、それをアップロードします。
with open_file('wrong_format.zip') as file:
response = self.client.post(url, {'archive': file})
self.assertEqual(response.status_code, 200)
self.assertContains(response, '<li>Only zip archived are allowed</li>')
しかし、私は次のエラーを取得する:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x99 in position 10: invalid start byte
ブラウザからするとうまく動作します。ここで
はスタックです:
Traceback (most recent call last):
File "/app/plugins/tests/uploads.py", line 33, in test_bad_archive
response = self.client.post(url, {'archive': file})
File "/usr/local/lib/python3.6/site-packages/django/test/client.py", line 548, in post
secure=secure, **extra)
File "/usr/local/lib/python3.6/site-packages/django/test/client.py", line 347, in post
post_data = self._encode_data(data, content_type)
File "/usr/local/lib/python3.6/site-packages/django/test/client.py", line 311, in _encode_data
return encode_multipart(BOUNDARY, data)
File "/usr/local/lib/python3.6/site-packages/django/test/client.py", line 201, in encode_multipart
lines.extend(encode_file(boundary, key, value))
File "/usr/local/lib/python3.6/site-packages/django/test/client.py", line 254, in encode_file
to_bytes(file.read())
File "/usr/local/lib/python3.6/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x99 in position 10: invalid start byte
スタックトレースを投稿できますか?内部のどの機能がこの問題を抱えているかを知るのに役立ちます。 – Anonymous
はい、そのまま編集します –
'open_file()'とは何ですか?なぜ普通の 'open()'ではないのですか?また、私は問題はあなたがバイナリモードでファイルをオープンしていないと思う( 'open( 'file.zip'、 'rb')')。 – Anonymous