Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating zip file from byte

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?

like image 485
Tahreem Iqbal Avatar asked Mar 01 '26 08:03

Tahreem Iqbal


1 Answers

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.

like image 165
mata Avatar answered Mar 03 '26 04:03

mata



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!