Всем привет.
Есть веб админка написана на чистом php, там добавляется товар и в него загружается одновременно любое кол-во картинок.
Неделю работало, потом Iphone 11 pro перестал грузить все фото, загружает 7 из 10, или 10 из 15. Сохраняешь товар, заходишь в него чтобы догрузить именно эти фото - не грузит... Не ошибок, вообще ничего нет, включал уведомление всех ошибок php + исключения на загрузку. Чудеса в том, что любой телефон на андроиде - грузит все на ура, на десктопе - все ок. Пробовали хром в айфон поставить - не помогло.
Взяли второй телефон айфон, увы он такой же - 11 про. - 3 дня грузил все корректно и точно так не догружает...
Куда можно копать?
<?php
Класс загрузки фото
class File {
public static function uploadPhoto( array $uploaded_file ) {
$ext = File::getExt( $uploaded_file['name'] );
$initial_name = 'upload/' . uniqid( '' ) . '.jpg';
$name = 'upload/' . sha1( $initial_name ) . '.jpg';
$path = UPLOAD_PATH . $name;
move_uploaded_file( $uploaded_file['tmp_name'], $path );
return $initial_name;
}
public static function uploadVideo( array $uploaded_file ) {
$ext = File::getExt( $uploaded_file['name'] );
$name = 'upload/' . uniqid( '' ) . '.' . $ext;
$path = UPLOAD_PATH . $name;
move_uploaded_file( $uploaded_file['tmp_name'], $path );
return $name;
}
public static function prepareFiles( array $files ) {
$result = [];
foreach ( $files['name'] ?? [] as $i => $item ) {
$result[] = [
'name' => $files['name'][$i],
'type' => $files['type'][$i],
'tmp_name' => $files['tmp_name'][$i],
'error' => $files['error'][$i],
'size' => $files['size'][$i]
];
}
return $result;
}
protected static function getExt( string $name ) {
$parts = explode( '.', $name );
return array_pop( $parts );
}
}
страница загрузки фото
<?php
$PAGE = [
'aside' => true,
'title' => 'Загрузка фото',
'need_login' => true
];
$id = (int) $_GET['id'];
$car = Auto::getById( $id );
if ( isset( $_POST['upload'] ) ) {
$files = File::prepareFiles( $_FILES['files'] );
$photos = [];
foreach ( $files as $file ) {
if ( $file['type'] != 'image/jpeg' ) continue;
$photos[] = File::uploadPhoto( $file );
}
Auto::addPhotos( $id, $photos );
redirect( '?page=edit_car&id=' . $id );
}
?>
<h2>Загрузка фото: <?php echo $car['brand'] . ' ' . $car['model'] ?></h2>
<div class="table-wrap">
<form action="" method="POST" enctype="multipart/form-data">
<div class="form__row">
<label class="form__row-label">Файлы</label>
<div class="form__row-content">
<input type="file" multiple class="form__input--text" name="files[]" accept="image/jpeg">
<div class="note">Вы можете выбрать сразу несколько файлов. Изображение должно быть в формате JPG.</div>
</div>
</div>
<div class="form__row">
<label class="form__row-label"></label>
<button class="button button--primary" name="upload">Загрузить</button>
</div>
</form>
</div>