Come selezionare più file con <input type="file">?
Come selezionare più file con <input type="file">?
Risposte:
Nuova risposta:
In HTML5 puoi aggiungere l' multipleattributo per selezionare più di 1 file.
<input type="file" name="filefield" multiple="multiple">
Vecchia risposta:
Puoi selezionare solo 1 file per
<input type="file" />. Se desideri inviare più file, dovrai utilizzare più tag di input o utilizzare Flash o Silverlight.
C'è anche HTML5 <input type="file" multiple />( specifica ).
Il supporto del browser è abbastanza buono su desktop (ma non supportato da IE 9 e precedenti), meno buono su dispositivi mobili, immagino perché è più difficile da implementare correttamente a seconda della piattaforma e della versione.
name="files[]"
L'intera cosa dovrebbe assomigliare a:
<form enctype='multipart/form-data' method='POST' action='submitFormTo.php'>
<input type='file' name='files[]' multiple />
<button type='submit'>Submit</button>
</form>
Assicurati di avere l' enctype='multipart/form-data'attributo nel <form>tag, altrimenti non puoi leggere i file sul lato server dopo l'invio!
Questo plugin jQuery ( jQuery File Upload Demo ) lo fa senza flash, nella forma che sta usando:
<input type='file' name='files[]' multiple />
Ora puoi farlo con HTML5
In sostanza si utilizza l'attributo multiplo sull'input del file.
<input type='file' multiple>
.nameproprietà, quindi il titolo nel tuo esempio è sempre undefined: jsfiddle.net/m5jeyeyt/1
HTML5 ha fornito un nuovo attributo multiplo per l'elemento di input il cui attributo di tipo è file. Quindi puoi selezionare più file e IE9 e le versioni precedenti non lo supportano.
NOTA: fare attenzione al nome dell'elemento di input. quando vuoi caricare più file devi usare array e non string come valore dell'attributo name.
es: input type = "file" name = "myPhotos []" multiple = "multiple"
e se stai usando php allora otterrai i dati in $ _FILES e userai var_dump ($ _ FILES) e vedrai l'output ed eseguirai l'elaborazione Ora puoi iterare e fare il resto
Questo è facile ...
<input type='file' multiple>
$('#file').on('change',function(){
_readFileDataUrl(this,function(err,files){
if(err){return}
console.log(files)//contains base64 encoded string array holding the
image data
});
});
var _readFileDataUrl=function(input,callback){
var len=input.files.length,_files=[],res=[];
var readFile=function(filePos){
if(!filePos){
callback(false,res);
}else{
var reader=new FileReader();
reader.onload=function(e){
res.push(e.target.result);
readFile(_files.shift());
};
reader.readAsDataURL(filePos);
}
};
for(var x=0;x<len;x++){
_files.push(input.files[x]);
}
readFile(_files.shift());
};
<form action="" method="post" enctype="multipart/form-data">
<input type="file" multiple name="img[]"/>
<input type="submit">
</form>
<?php
print_r($_FILES['img']['name']);
?>
Copia e incolla questo nel tuo html:
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// files is a FileList of File objects. List some properties.
var output = [];
for (var i = 0, f; f = files[i]; i++) {
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
'</li>');
}
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}
Questo ti arriva, tramite me, da questa pagina web: http://www.html5rocks.com/en/tutorials/file/dndfiles/