Ich habe bereits über das Hochladen von Bildern geschrieben, aber es war ein einzelner Upload. Vor kurzem gab es eine geschäftliche Anforderung, die mehrere Uploads erforderte, also habe ich es umgeschrieben
HTML-Struktur:
XML/HTML-CodeInhalt in die Zwischenablage kopieren
-
<div class="container" >
-
<Label>Bitte wählen Sie eine Bilddatei aus: Label>
-
<Eingabe Typ="Datei" id="file_input"mehrere/>
-
div>
Lassen Sie uns übrigens über die Hauptlogik dieses Uploads sprechen:
·Verwenden Sie das Eingabe-Tag und wählen Sie „type=file“ aus. Denken Sie daran, mehrere Bilder mitzubringen, andernfalls können Sie nur ein einzelnes Bild auswählen
·Binden Sie die Änderungszeit der Eingabe,
·Der entscheidende Punkt ist, wie mit diesem Änderungsereignis umgegangen wird. Verwenden Sie die neue FileReader-Schnittstelle von H5, um die Datei zu lesen und in base64 zu kodieren. Als nächstes müssen Sie mit den Back-End-Klassenkameraden interagieren
JS-Code:
JavaScript-Code
Inhalt in die Zwischenablage kopieren
-
window.onload = function(){
-
var input = document.getElementById("file_input");
-
var result,div;
-
-
if(typeof FileReader==='undefined'){
-
result.innerHTML = "抱歉,你的浏览器不支持 FileReader";
-
input.setAttribute('disabled','disabled');
-
}else{
-
input.addEventListener('change',readFile,false);
-
}
-
function readFile(){
-
for(var i=0;i<this.files.length;i++){
-
if (!input['value'].match(/.jpg|.gif|.png|.bmp/i)){
-
return alert("上传的图片格式不正确,请重新选择")
}
-
var reader = new FileReader();
-
reader.readAsDataURL(this.files[i]);
-
reader.onload = function(e){
-
result = '

this
.result+'" alt=""/> ';
-
div = document.createElement('div'
-
div.innerHTML = result;
-
document.getElementById('body').appendChild(div);
-
-
}
-
Geht es so, dass man mehrere Bilder hochlädt? 0.0
Dies geschieht jedoch nicht. Dadurch wird das Bild nur in die Base64-Kodierung konvertiert und dann im Frontend angezeigt. Wenn ich es aktualisiere, ist nichts zu sehen
Öffnen Sie nach dem Einfügen des Bildes die Entwicklertools und prüfen Sie, ob die HTML-Struktur wie folgt aussieht
Der realistische Ansatz besteht darin, dass wir die Dateien in der Dateiwarteschlange in der Verarbeitungsfunktion an das Backend senden. Die Backend-Studenten geben die MD5-verschlüsselte Datei und den der Datei entsprechenden Pfad an das Front-End zurück, und das Front-End nimmt diesen Pfad und stellt es auf der Seite dar.
Danach wird die MD5-Datei an das Backend zurückgesendet, da das Frontend die Bilder normalerweise nach dem Hochladen löscht. Der Zweck der Rückgabe besteht darin, dem Backend mitzuteilen, dass es bestätigen soll, dass diese Bilder das sind, was wir wollen, und das Backend speichert sie in der Datenbank.
Sagen Sie mir, wie ich mit jquery interagieren soll
JavaScript-Code
Inhalt in die Zwischenablage kopieren
-
Funktion readFile(){
-
var fd = new FormData();
-
für(var i=0;i<dieses.files.length;i ){
-
var reader = new FileReader();
-
reader.readAsDataURL(this.files[i]);
-
fd.append(i,this.files[i]);
}
-
$.ajax({
-
URL : '',
-
Typ : 'post',
-
Daten : fd,
-
Erfolg : Funktion(Daten){
-
console.log(data)
-
}
-
})
-
}
FormData也是H5的新接口,用来模拟表单控件的提交,最大的好处呢就是可以提交二进制文件
然后Erfolg的回调里面我们拿回了想要的数据后呢,就可以将图片插进去页面啦,类似之前的做法~
上个效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助.
原文:http://www.cnblogs.com/weapon-x/p/5237064.html