Meerdere foto's uploaden met compressie
Ik heb een vraagje,
In Html heb ik een forum gemaakt waar je meerdere foto's kunt uploaden. Maar nu loop ik tegen een probleem aan.....de meesten foto's die je wilt uploaden zijn groter dan de maximale 2MB die mag uploaden in PHP. Dus ben ik op internet eens fink gaan zoeken naar PHP image compression. Hier legt echter niemand uit hoe dit werkt bij meerdere foto's.....
Hier is mijn code:
Code (php)
1
2
2
Attachment:<br>
<input class="form-control" type="file" name="attachments[]" id="attachments" multiple style="width:300px">
<input class="form-control" type="file" name="attachments[]" id="attachments" multiple style="width:300px">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
for($i = 0; $i < count($_FILES['attachments']['name']); $i++) {
$filetmp = $_FILES["attachments"]["tmp_name"][$i];
$filename = $_FILES["attachments"]["name"][$i];
$filepath = "images/".$filename;
move_uploaded_file($filetmp,$filepath);
$querypictureupload = "INSERT INTO file_upload (filename)
VALUES ('$filename')";
$result = mysqli_query($conn, $querypictureupload);
}
?>
for($i = 0; $i < count($_FILES['attachments']['name']); $i++) {
$filetmp = $_FILES["attachments"]["tmp_name"][$i];
$filename = $_FILES["attachments"]["name"][$i];
$filepath = "images/".$filename;
move_uploaded_file($filetmp,$filepath);
$querypictureupload = "INSERT INTO file_upload (filename)
VALUES ('$filename')";
$result = mysqli_query($conn, $querypictureupload);
}
?>
Code (php)
1
2
2
Attachment:<br>
<input class="form-control" type="file" name="image" id="image" style="width:300px">
<input class="form-control" type="file" name="image" id="image" style="width:300px">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if (isset($_POST['submit'])) {
$target = "images/";
$target = $target.basename($_FILES['image']['name']);
$photo_name = ($_FILES['image']['name']);
$imageFileType = pathinfo($target, PATHINFO_EXTENSION);
$file = $photo_name;
$query = "INSERT INTO photos(image) VALUES ('$file')";
$result = mysqli_query($conn, $query);
if ($result && compress($_FILES['image']['tmp_name'], $target, 50)) {
echo "<script>alert('Image uploaded')</script>";
}
else {
echo "<script>alert('An error occured')</script>";
}
}
?>
if (isset($_POST['submit'])) {
$target = "images/";
$target = $target.basename($_FILES['image']['name']);
$photo_name = ($_FILES['image']['name']);
$imageFileType = pathinfo($target, PATHINFO_EXTENSION);
$file = $photo_name;
$query = "INSERT INTO photos(image) VALUES ('$file')";
$result = mysqli_query($conn, $query);
if ($result && compress($_FILES['image']['tmp_name'], $target, 50)) {
echo "<script>alert('Image uploaded')</script>";
}
else {
echo "<script>alert('An error occured')</script>";
}
}
?>
--FUNCTIONS.PHP--
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function compress($source, $destination, $quality){
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
return $destination;
}
?>
function compress($source, $destination, $quality){
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
return $destination;
}
?>
Zoals hier boven in het 1e bestand te zien is kan je meerdere foto's uploaden, waar je in de 2e maar 1 kan uploaden maar deze wel verkleind wordt......
Is er iemand die mij kan helpen met het samenvoegen van deze 2 bestanden zodat je meerdere foto's kunt oploaden en dezen worden verkleind! Zelf had ik geprobeert op de function te verwerken in de for loop maar dat lukt niet helemaal..
Alvast bedankt
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 19/10/2018 18:10:18 door - Ariën -
Ikzelf gebruik de uploadclass van Verot.net. Werkt super handig. En als je bestanden groter dan 2MB wilt uploaden, moet je jouw uploadlimiet aanpassen. Compressie heeft niks met het uploadproces te maken.
Gewijzigd op 19/10/2018 11:41:36 door - Ariën -
In een ander draadje kwam dit geval voorbij, volgens mij kan dat ding ook aan de client zijde afbeeldingen verkleinen (qua afmeting, dus niet zozeer compressie wellicht).
En je kunt/mag niet in je php.ini gewoon upload_max_filesize (en post_max_size!) flink opschroeven?
2MB is overigens belachelijk weinig. Een beetje gemiddelde foto is tegenwoordig al 7 MB.
Er is zeer veel info. Je kunt met een script voordat een foto daadwerkelijk geüpload wordt resizen. Wellicht is dit een oplossing. Jij bepaalt vooraf de formaten die geüpload mogen worden. En dan laat je het script de rest doen. Hier ene link met, mogelijk, een oplossing:https://stackoverflow.com/questions/23945494/use-html5-to-resize-an-image-before-upload