sputnickk
@sputnickk

Почему не загружаются изображения на IPhone?

Всем привет.

Есть веб админка написана на чистом 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>
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 1
@higara13
возможно, потому что на iphone фото не jpg , а heic
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы