Ho un modulo con 3 campi di input file separati. Non riesco a trovare un modo per convalidare individualmente i loro tipi MIME prima di caricarli sul server. (Si suppone che i primi 2 consentano solo file MP3, mentre l'ultimo dovrebbe solo consentire file JPEG.)Convalidare singoli file in più file caricati prima di caricarli sul server
Come posso fare questo, o è meglio controllare il tipo MIME dopo che il file è stato caricato, quindi mantenerlo o cancellarlo e restituire un messaggio di errore?
Ecco il mio codice:
<form action="upload.php" method="post" enctype="multipart/form-data">
<div class="col-2">
<label>
Full MP3 file
<input type="file" name="file_array[]" id="file_array[]" tabindex="1" required>
</label>
</div>
<div class="col-2">
<label>
Sample MP3 file (30-45 seconds)
<input type="file" name="file_array[]" id="file_array[]" tabindex="2" required>
</label>
</div>
<div class="col-2">
<label>
JPEG Cover Art (Recommended 400 x 400 px)
<input type="file" name="file_array[]" id="file_array[]" tabindex="3" required>
</label>
</div>
<div class="col-2">
<label>
<progress id="progressBar" value="0" max="100" style="width:100%;"> </progress>
</label>
</div>
<div class="col-submit">
<input type="submit" value="Upload" class="submitbtn" onclick="uploadFile()">
</div>
</form>
e questo è upload.php
if(isset($_FILES['file_array'])){
$name_array = $_FILES['file_array']['name'];
$tmp_name_array = $_FILES['file_array']['tmp_name'];
$type_array = $_FILES['file_array']['type'];
$size_array = $_FILES['file_array']['size'];
$error_array = $_FILES['file_array']['error'];
for($i = 0; $i < count($tmp_name_array); $i++){
if(move_uploaded_file($tmp_name_array[$i], "../artists/$id/temp/".$name_array[$i])){
echo $name_array[$i]." upload is complete<br>";
} else {
echo "move_uploaded_file function failed for ".$name_array[$i]."<br>";
}
}
}
La convalida JavaScript è anche di consulenza al meglio. Stai meglio con un [''] (http://stackoverflow.com/questions/181214/file-input-accept-attribute-is-it-useful) filtro. * Devi * asserire in PHP se il contenuto del file è quello che il browser ha affermato/indovinato. – mario