В C # я создаю zip-архив с несколькими файлами:
using (MemoryStream ms = new MemoryStream())
{
using (ZipStorer zip = ZipStorer.Create(ms, "comment"))
{
zip.EncodeUTF8 = true;
foreach (FileInfo logFile in logFiles)
{
zip.AddFile(ZipStorer.Compression.Deflate, logFile.FullName, logFile.Name, "");
}
}
this.logger.log("memory stream to array");
zipBytesArr = ms.ToArray();
}
Это работает, потому что когда я сохраняю zip-архив на сервере с C # - я могу открыть его.
File.WriteAllBytes("C:\\test.zip", zipBytesArr);
Теперь я отправляю его как массив байтов zipBytesArr
в запросе POST, создаю объект с типом поля byte[]
, затем сериализую его в JSON
и отправляю.
MyObject myObject = new MyObject()
{
// .. some fields
ZipFileBytesArr = ZipFileBytesArr
};
var json = JsonConvert.SerializeObject(myObject);
Теперь я хочу получить его вPython 3 (колба), я получил длинную строку и хочу создать zip-архив.У меня вопрос: как этого добиться?
Я пробовал что-то вроде этого:
bytes_as_str = "UEsDBBQAAAgIACyrWk4qVSmD0gYAAA4WAAAYAAAAMjAxOTAyMjZfb3BlbnZ...."
bytes_as_bytes = bytes_as_str.encode(encoding="utf-8")
file = zipfile.ZipFile(io.BytesIO(bytes_as_bytes))
и это не работает, я получил ошибку:
zipfile.BadZipFile: File is not a zip file