POST-запрос zip-файла повреждает файл - PullRequest
0 голосов
/ 02 февраля 2020

У меня проблемы с загрузкой 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 для его извлечения, он выдаст сообщение « Неожиданный конец данных », но сможет извлечь файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...