Вот моя HTML-форма:
<form class="plist" action="build/build.php" method="_POST" enctype="multipart/form-data">
<label>Package Name: </label>
<input type="text" name="packageName">
<br />
<br />
<label>Package Description: </label>
<textarea rows="4" cols="20" type="text" name="packageDescription"></textarea>
<br />
<br />
<label>Website: </label>
<input type="text" name="packageWebsite">
<br />
<br />
<label>Contact: </label>
<input type="text" name="packageContact">
<br />
<br />
<label>Price: </label>
<input type="text" name="packagePrice">
<br />
<br />
<label>Screenshots: </label>
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" name="packageScreenshots" id="packageScreenshots">
<br />
<br />
<button type="submit" name="submit" value="submit">Build</button>
</form>
а также build.php
:
if($_SERVER['REQUEST_METHOD'] == 'POST' && $_FILES['packageScreenshots']['error'] == 'UPLOAD_ERR_OK'){
$uploaddir = '/zips/uploads/';
$uploadfile = $uploaddir . basename($_FILES['packageScreenshots']['name']);
list($width, $height, $type, $attr) = getimagesize($_FILES['packageScreenshots']['tmp_name']);
if (move_uploaded_file($_FILES['packageScreenshots']['tmp_name'], $uploadfile)) {
echo "File was successfully uploaded.\n";
} else {
echo "Hmm...";
}
};
// Create the zipped folder using ZipArchive()
$zip = new ZipArchive;
$full = $zip->open("/zips/$packageName.zip", ZipArchive::CREATE);
$zip->addFile('/zips/uploads/install.plist', 'install.plist');
$zip->addFile('/zips/uploads/google.png', 'google.png');
$zip->close();
Функция ZipArchive () работает отлично, есть вещи, которые я показал выше build.php
где install.plist
создан, что работает нормально, .plist создается в правильном каталоге и компилируется в zip. При выборе и изображении для загрузки изображение не найдено в разделе /zips/uploads/
как и должно быть. Не удалось заставить его работать ни на локальном хосте, ни на моем сервере. Пробовал PHP с 5.4 до 7.1 (GoDaddy), с включенной библиотекой zip. Каталоги также имеют правильные разрешения.
Попробуйте изменить _POST на POST. 🙂
Других решений пока нет …