I'm sending byte string of a zip file from client side using JSZip and need to convert it back to zip on server side. the code I've tried isn't working.
b = bytearray()
b.extend(map(ord, request.POST.get("zipFile")))
zipPath = 'uploadFile' + str(uuid.uuid4()) + '.zip'
myzip = zipfile.ZipFile(zipPath, 'w')
with myzip:
myzip.write(b)
It gives the error:
stat: path too long for Windows
How do I save my byte string as a zip file?
ZipFile.write(filename, [arcname[, compress_type]]) takes the name of a local file to be added to the zip file. To write data from a bytearray or bytes object you need to use the ZipFile.writestr(zinfo_or_arcname, bytes[, compress_type]) method instead shown below:
with zipfile.ZipFile(zipPath, 'w'):
zipFile.writestr('name_of_file_in_archive', zipContents)
Note: if request.POST.get("zipFile") already is bytes (or str in python2) you don't need to convert it to a bytearray before writing it to the archive.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With