В настоящее время я пытаюсь загрузить несколько файлов изображений, используя одну форму (AJAX) и Пуленепробиваемая библиотека.
Мне удалось получить 1 работу, #avatar-upload-input
успешно загружает изображения через форму AJAX.
<form method="post" action="ajax/updateprofile" enctype="multipart/form-data" id="dynamicform" data-func="updateprofile">
<input type="file" name="avatar" id="avatar-upload-input" accept="image/*"/>
<input type="file" name="banner" id="banner-upload-input" accept="image/*"/>
</form>
Сейчас я пытаюсь заставить работать второй, но я действительно не уверен, как бы я пошел и получил это работать!
Я погуглил и увидел что больше людей было имея тот же вопрос, но никто не получил четкого ответа.
В комментариях к этим вопросам было высказано предположение, что для $ _FILES необходим цикл. Я пробовал следующее:
foreach($_FILES as $file) {
$image = new Bulletproof\Image($file);
$image->setName($Hashids->encode($_SESSION['user_id']) . '-' . uniqid());
$image->setMime(array('jpg', 'png', 'jpeg'));
$image->setLocation('../assets/images/usercontent/pfp');
if($image['avatar']){
$upload_pfp = $image->upload();
bulletproof\utils\resize($upload_pfp->getFullPath(), $upload_pfp->getMime(), $upload_pfp->getWidth(), $upload_pfp->getHeight(), 190, 175);
}
}
Это не дало мне никаких ошибок, но и не загружало изображения.
Я надеюсь, что кто-то может помочь мне решить, как я могу загрузить несколько изображений, используя упомянутую библиотеку!
foreach($_FILES as $key => $file) { //get upload name: $key
$image = new Bulletproof\Image($file);
$image->setName($Hashids->encode($_SESSION['user_id']) . '-' . uniqid());
$image->setMime(array('jpg', 'png', 'jpeg'));
$image->setLocation('../assets/images/usercontent/pfp');
if($key == 'avatar'){ //which file
if($image->upload()){ //upload succeed?
bulletproof\utils\resize( //you are still playing with $image
$image->getFullPath(),
$image->getMime(),
$image->getWidth(),
$image->getHeight(),
190,
175
);
}
}elseif($key == 'banner'){ //do it all over again with banner
if($image->upload()) {
//do something with banner
}
}
}
Других решений пока нет …