У меня проблемы с загрузкой zip-файла с одного сервера на другой. В приведенном ниже сценарии я копирую его, затем архивирую и отправляю через POST-запрос на принимающий сервер.
for file in list:
filename = os.path.abspath(log) #get the full path of the file
new_name = filename.replace('/', '_') #replace the / with _
shutil.copy(file, new_name) #copy the file and give it a new name
new_name_zip = new_name + '.zip'
#Zip it up
zippy = zipfile.ZipFile(new_name_zip, 'w', zipfile.ZIP_DEFLATED)
zippy.write(new_name)
#Post if off
up = {'uploadedFile':(new_name_zip, open(new_name_zip, 'rb'), 'multipart/form-data')}
r = requests.post(url, files=up)
Код php на стороне принимающего сервера:
<?php
$fileName = $_FILES['uploadedFile']['name'];
$uploadFileDir = 'uploads/';
$dest_path = $uploadFileDir . $fileName;
move_uploaded_file($fileTmpPath, $dest_path);
shell_exec("./processing.py $fileName &");
?>
Это прекрасно работает для отправки, чтобы отправить файл на мой принимающий сервер, но когда я go чтобы открыть и обработать zip-файл дальше, я сталкиваюсь с трудностями. Если я запускаю команду linux 'file' для полученного файла,
file.zip: Zip archive data, at least v2.0 to extract
Но когда я go извлекает его, то, используя 'unzip file.zip', он сообщает:
Archive: file.zip
End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of file.zip or file.zip.zip, and cannot find file.zip.ZIP, period.
Когда я загружаю zip-файл с отправляющего устройства, я могу извлечь и открыть его успешно, но когда я загружаю полученный файл, который был отправлен через POST, и использую правой кнопкой мыши> Извлечь все на моем Windows ноутбук, он говорит мне ' Сжатая папка пуста '. Как ни странно, если я использую 7zip для его извлечения, он выдаст сообщение « Неожиданный конец данных », но сможет извлечь файл.