Bootstrap FileInput implementiert Bild-Upload-Funktion

Bootstrap FileInput implementiert Bild-Upload-Funktion

In diesem Artikelbeispiel wird der spezifische Code von Bootstrap FileInput zur Implementierung der Bild-Upload-Funktion zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

HTML Quelltext:

<div Klasse="Formulargruppe">
 <label class="col-sm-2 control-label">Bild</label>
 <div Klasse="col-sm-8">
  <input id="filesInput" type="file" mehrere Daten-Durchsuchen-bei-Zonen-Klick="true" class="file-loading" accept="image/*" />
  <input id="resources" name="resources" th:value="${record.picUrls}" type="hidden">//Hochgeladenen Bildpfad abrufen, $("#filesInput").val() kann ihn nicht abrufen, verwenden Sie versteckte Eingabe, um ihn abzurufen</div>
</div>

Importieren Sie JS- und CSS-Dateien

<link href="/ajax/libs/bootstrap-fileinput/fileinput.css" rel="stylesheet" type="text/css"/>
<script th:src="@{/js/jquery.min.js}"></script>
<script th:src="@{/js/bootstrap.min.js}"></script>
<script th:src="@{/ajax/libs/bootstrap-fileinput/fileinput.js}"></script>

js-Code:

var List = new Array(); //Definieren Sie eine globale Variable, die den Dateinamen und die ID akzeptiert
$(Funktion () {
 var picStr = [
http:...,
http:....
];
var picStrConfig = [
{Beschriftung: "11111", Breite: "120px", Datei-ID: "123456", URL: "deleteData", Typ: "Bild", Schlüssel: "1"},
........
];
$('#filesInput').fileinput({
 Thema: 'fas',
 Sprache: 'zh',
 Upload-URL: ctx + 'Fahrrad/Aufzeichnung/Upload-Daten',
 uploadAsync: true, // Standardmäßiger asynchroner Upload showUpload: true, // Ob die Upload-Schaltfläche angezeigt werden soll overwriteInitial: false,
 showRemove: false, //Zeige die Schaltfläche „Entfernen“// showPreview: true, //Zeige eine Vorschau oder nicht showCaption: false, //Zeige einen Titel oder nicht browseClass: „btn btn-primary“, //Stil der Schaltfläche dropZoneEnabled: false, //Zeige die Drag-Zone oder nicht maxFileCount: 5, //Gibt die maximale Anzahl von Dateien an, die gleichzeitig hochgeladen werden können enctype: „multipart/form-data“,
 validateInitialCount:true,
 Layoutvorlagen: {actionUpload: ''},
 maxFilesNum: 5,
 Dateityp: "any",
 allowedPreviewTypes: ['Bild'],
 Vorschaudateisymbol: "<i class='glyphicon glyphicon-king'></i>",
 initialPreviewAsData: wahr,
 initialPreview: picStr, //Initialisiere den Echo-Bildpfad initialPreviewConfig: picStrConfig //Konfiguriere einige Parameter in der Vorschau}).on("fileuploaded", function (event, data, previewId, index) {
 var Antwort = Daten.Antwort;
 var filePath = data.response.filePath; //Der Dateiname, der zurückgegeben wird, nachdem die Datei erfolgreich hochgeladen wurde. Sie können einen benutzerdefinierten Dateinamen zurückgeben List.push({ FileName: filePath, KeyID: previewId })
 // Alarm (Antwort.Dateipfad);
 // $("#fileMd5").val(response.fileMd5);
 // $("#version").val(response.newVersionName);
 var Ressourcen = $('#Ressourcen').val();
 wenn (!Ressourcen){
  $("#Ressourcen").val(response.filePath);
 }anders{
  $("#Ressourcen").val(Ressourcen+"^_^"+response.filePath);
 }
 
 
}).on('filepredelete', function(event, data, previewId, index) { //Aktion vor dem Löschen des Originalbilds auslösen}).on('filedeleted',function (event, data, previewId, index) {//Aktion nach dem Löschen des Originalbildsvar resources = $("#resources").val();
 var Antwort = Vorschau-ID.ResponseJSON;
 wenn(Antwortcode == 0){
  var deleteName = "/"+data;
  wenn(resources.indexOf("^_^"+deleteName)>-1){
   $("#resources").val("^_^"+resources.replace(deleteName,""));
   Ressourcen = $("#Ressourcen").val();
  }
  wenn(Ressourcen.indexOf(deleteName+"^_^")>-1){
   $("#resources").val(resources.replace(deleteName+"^_^",""));
   Ressourcen = $("#Ressourcen").val();
  }
  wenn (Ressourcen.indexOf(deleteName)>-1){
   $("#resources").val(resources.replace(deleteName,""));
   Ressourcen = $("#Ressourcen").val();
  }
 }
}).on('filepreupload', Funktion(Ereignis, Daten, Vorschau-ID, Index) {
 var form = data.form, files = data.files, extra = data.extra,
  Antwort = Daten.Antwort, Leser = Daten.Leser;
}).on("filesuccessremove", Funktion (Ereignis, Daten, Vorschau-ID, Index) {
 var Ressourcen = $("#Ressourcen").val();
 für (var i = 0; i < Listenlänge; i++) {
  wenn (Liste[i].SchlüsselID == Daten) {
   wenn(resources.indexOf("^_^"+List[i].FileName)>-1){
    $("#resources").val("^_^"+resources.replace(Liste[i].FileName,""));
    Ressourcen = $("#Ressourcen").val();
   }
   wenn(Ressourcen.indexOf(Liste[i].FileName+"^_^")>-1){
    $("#resources").val(resources.replace(Liste[i].FileName+"^_^",""));
    Ressourcen = $("#Ressourcen").val();
   }
   wenn(Ressourcen.indexOf(Liste[i].FileName)>-1){
    $("#resources").val(resources.replace(Liste[i].FileName,""));
    Ressourcen = $("#Ressourcen").val();
   }
   Liste[i].SchlüsselID = "1"
  }
 }
});
})

Java-Code:

/**
  * Datei hochladen */
 @RequestMapping("/uploadData")
 @AntwortBody
 öffentliche Map<String, Object> uploadData(HttpServletRequest-Anforderung, HttpServletResponse-Antwort) löst Exception aus{
  request.setCharacterEncoding("UTF-8");
  Map<String, Objekt> json = neue HashMap<String, Objekt>();
  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) Anfrage;
 
  /** Dateistream der Seitensteuerung* */
  MultipartFile multipartFile = null;
  Karte map = multipartRequest.getFileMap();
  für (Iterator i = map.keySet().iterator(); i.hasNext();) {
   Objekt obj = i.next();
   multipartFile=(Mehrteilige Datei) map.get(obj);
 
  }
  /** Dateisuffix abrufen * */
  Zeichenfolge Dateiname = multipartFile.getOriginalFilename();
 
  Eingabestream Eingabestream;
  Zeichenfolgenpfad = "";
  Zeichenfolge fileMd5 = "";
  versuchen {
   /**Laden Sie die Datei in das Repository hoch **/
   inputStream = multipartFile.getInputStream();
   Datei tmpFile = File.createTempFile(Dateiname,
   Dateiname.Teilzeichenfolge(Dateiname.letzterIndexvon(".")));
   fileMd5 = Dateien.hash(tmpFile, Hashing.md5()).toString();
   : FileUtils.copyInputStreamToFile(Eingabestream, temporäre Datei);
   /** Auf MinIO hochladen**/
   Pfad = minioFileUtil.uploadCustomize(multipartFile.getInputStream(), Dateiname.Substring(Dateiname.letzterIndexvon(".")), "",multipartFile.getContentType());
   /** Auf Alibaba Cloud OSS hochladen **/
// Pfad = AliOSSUtils.getInstance().multpartFileUpload(multipartFile,"Fahrrad");
   tmpFile.delete();
 
  } Fang (Ausnahme e) {
   e.printStackTrace();
   logger.error("Hochladen fehlgeschlagen",e);
   json.put("fileMd5", fileMd5);
   json.put("message", "Hochladen fehlgeschlagen");
   json.put("status", falsch);
   json.put("Dateipfad", Pfad);
   gib JSON zurück;
  }
  json.put("fileMd5", fileMd5);
  json.put("message", "Upload erfolgreich");
  json.put("status", wahr);
  json.put("Dateipfad", Pfad);
  json.put("Schlüssel", UUIDGenerator.getUUID());
  gib JSON zurück;
 }
/**
 * Datei Datei löschen */
@RequestMapping("/edit/deleteData/{id}")
@AntwortBody
@Transactional(rollbackFor = Ausnahme.Klasse)
öffentliches AjaxResult deleteData(@PathVariable("id")String id, HttpServletRequest Anfrage) löst Exception aus{
 Zeichenfolgenschlüssel = request.getParameter("Schlüssel");
 Datensatz Datensatz = recordService.getById(id);
 String picUrls = Datensatz.getPicUrls();
 String deleteName = "/" + Schlüssel;
 wenn (picUrls.indexOf("^_^" + deleteName) > -1) {
  picUrls = "^_^" + picUrls.replace(deleteName, "");
 }
 wenn (picUrls.indexOf(deleteName + "^_^") > -1) {
  picUrls = picUrls.replace(deleteName + "^_^", "");
 }
 wenn (picUrls.indexOf(deleteName) > -1) {
  picUrls = picUrls.replace(deleteName, "");
 }
 Datensatz.setPicUrls(picUrls);
 if (recordMapper.updatePicsById(record) == 1) { /** Löschen Sie zuerst den Bildpfad in der Datenbank und löschen Sie dann die Quelldatei, in der das Bild gespeichert ist. **/
  minioUtil.removeObject(bucketName, Schlüssel);
  gib Erfolg zurück (Schlüssel);
 }
 Fehler zurückgeben();
}

Ändern Sie den FileInput-Quellcode:

self._handler($el, 'klicken', funktion () {
  wenn (!self._validateMinCount()) {
   gibt false zurück;
  }
  self.ajaxAborted = false;
  self._raise('filebeforedelete', [vKey, extraData]);
  //keine Inspektion JSUnresolvedVariable,JSHint
  $.modal.confirm("Möchten Sie die Originaldatei wirklich löschen? Sie kann nach dem Löschen nicht wiederhergestellt werden", Funktion () { // Initialisieren Sie das zurückgegebene Bild und öffnen Sie beim Löschen ein Eingabeaufforderungsfeld zur Bestätigung.
  wenn (self.ajaxAborted-Instanz von Promise) {
   self.ajaxAborted.then(Funktion (Ergebnis) {
    wenn (!Ergebnis) {
     $.ajax(Einstellungen);
    }
   });
  } anders {
   wenn (!self.ajaxAborted) {
    $.ajax(Einstellungen);
   }
  }
  })
 });
});

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Verwendung der Bootstrap Fileinput-Dateiuploadkomponente
  • Detaillierte Erklärung von Bootstrap FileInput, einem JS-Datei-Upload-Artefakt
  • Detaillierte Erklärung zur Verwendung des Bootstrap FileInput-Dateiupload-Vorschau-Plugins
  • Dateieingabe in Bootstrap mit Funktion zum Hochladen und Bearbeiten mehrerer Bilder
  • Das Fileinput-Plugin von Bootstrap implementiert mehrere Datei-Uploads
  • Bootstrapfileinput realisiert automatischen Dateiupload
  • Basierend auf dem Bootstrap-Upload-Plugin FileInput, um die asynchrone Ajax-Upload-Funktion zu realisieren (unterstützt das Hochladen mehrerer Dateien per Drag-and-Drop in der Vorschau).
  • Detaillierte Erläuterung der praktischen Anwendung der Bootstrap-FileInput-Datei-Upload-Steuerung
  • Bootstrap FileInput lädt eine neue Datei hoch und entfernt sie, wodurch der Server veranlasst wird, die Löschung der Konfiguration zu synchronisieren
  • Beispielcode für die Dateiuploadkomponente „fileinput.js“ von BootStrap

<<:  Detailliertes Installations- und Konfigurationstutorial für mysql5.7 unter CentOS

>>:  Detaillierte Beispiele für Docker-Compose-Netzwerke

Artikel empfehlen

Wie oft werden mehrere setStates in React aufgerufen?

Inhaltsverzeichnis 1. Zwei setState, wie oft soll...

React + ts realisiert den sekundären Verknüpfungseffekt

In diesem Artikel wird der spezifische Code von R...

So erzwingen Sie die vertikale Anzeige auf mobilen Seiten

Ich habe kürzlich bei der Arbeit eine mobile Seit...

JavaScript fügt Prototyp-Methodenimplementierung für integrierte Objekte hinzu

Die Reihenfolge, in der Objekte Methoden aufrufen...

Lernen, React-Gerüste zu bauen

1. Komplexität des Front-End-Engineerings Wenn wi...

So erstellen Sie geplante Aufgaben mit dem Crond-Tool in Linux

Vorwort Crond ist ein Tool zur geplanten Ausführu...

MySQL-Primärschlüssel-Benennungsstrategie im Zusammenhang

Als ich kürzlich die Details der Datenlebenszyklu...

Vue nutzt Amap zur Realisierung der Stadtpositionierung

In diesem Artikel wird der spezifische Code von V...

So kapseln Sie die Tabellenkomponente von Vue Element

Beim Kapseln von Vue-Komponenten werde ich weiter...

So stellen Sie Go-Webanwendungen mit Docker bereit

Inhaltsverzeichnis Warum brauchen wir Docker? Bei...

Detaillierte Erklärung der Ansichtszusammenfassungsdefinition im Angular-Framework

Vorwort Als Front-End-Framework, das „für große F...

So benennen Sie in Linux mehrere Dateien gleichzeitig um

Vorwort In unserer täglichen Arbeit müssen wir hä...