Heim Web-Frontend js-Tutorial AjaxFileUpload+Struts2 implementiert die Funktion zum Hochladen mehrerer Dateien

AjaxFileUpload+Struts2 implementiert die Funktion zum Hochladen mehrerer Dateien

May 21, 2018 pm 05:22 PM
上传 功能

这篇文章主要介绍了AjaxFileUpload+Struts2实现多文件上传功能,需要的朋友可以参考下

本文重点给大家介绍AjaxFileUpload+Struts2实现多文件上传功能,具体实现代码大家参考下本文。

单文件和多文件的实现区别主要修改两点,

一是插件ajaxfileupload.js里接收file文件ID的方式

二是后台action是数组形式接收

1、ajaxFileUpload文件下载地址http://www.phpletter.com/Demo/AjaxFileUpload-Demo/

2、引入jquery-1.8.0.min.js、ajaxFileUpload.js文件

3、文件上传页面核心代码

<body> 
  <form action="" enctype="multipart/form-data"> 
    <h2> 
      多文件上传 
    </h2> 
    <input type="file" id="file1" name="file" /> 
    </br> 
    <input type="file" id="file2" name="file" /> 
    </br> 
    <input type="file" id="file3" name="file" /> 
    </br> 
    <span> 
      <table id="down"> 
      </table> 
    </span> 
    </br> 
    <input type="button" onclick="fileUpload();" value="上传"> 
  </form> 
</body> 
<script type="text/javascript"> 
  function fileUpload() { 
    var files = ['file1','file2','file3']; //将上传三个文件 ID 分别为file2,file2,file3 
    $.ajaxFileUpload( { 
      url : 'fileUploadAction',   //用于文件上传的服务器端请求地址  
      secureuri : false,      //一般设置为false  
      fileElementId : files,    //文件上传的id属性 <input type="file" id="file" name="file" />  
      dataType : 'json',      //返回值类型 一般设置为json  
      success : function(data, status) { 
        var fileNames = data.fileFileName; //返回的文件名  
        var filePaths = data.filePath;   //返回的文件地址  
        for(var i=0;i<data.fileFileName.length;i++){ 
          //将上传后的文件 添加到页面中 以进行下载 
          $("#down").after("<tr><td height=&#39;25&#39;>"+fileNames[i]+ 
              "</td><td><a href=&#39;downloadFile?downloadFilePath="+filePaths[i]+"&#39;>下载</a></td></tr>") 
        } 
      } 
    }) 
  } 
</script>
Nach dem Login kopieren

以上fileElementId属性接收的files参数为['file1','file2','file3']

由于是多文件,所以我们需要修改ajaxfileupload.js 找到以下代码

var oldElement = jQuery('#' + fileElementId); 
var newElement = jQuery(oldElement).clone(); 
jQuery(oldElement).attr('id', fileId); 
jQuery(oldElement).before(newElement); 
jQuery(oldElement).appendTo(form);
Nach dem Login kopieren

修改为:

for(var i in fileElementId){  
  var oldElement = jQuery('#' + fileElementId[i]);  
  var newElement = jQuery(oldElement).clone();  
  jQuery(oldElement).attr('id', fileId);  
  jQuery(oldElement).before(newElement);  
  jQuery(oldElement).appendTo(form);  
}
Nach dem Login kopieren

4、文件上传Action

public class FileAction { 
  private File[] file;       //文件  
  private String[] fileFileName;  //文件名   
  private String[] filePath;    //文件路径 
  private String downloadFilePath; //文件下载路径 
  private InputStream inputStream;  
  /** 
   * 文件上传 
   * @return 
   */ 
  public String fileUpload() { 
    String path = ServletActionContext.getServletContext().getRealPath("/upload"); 
    File file = new File(path); // 判断文件夹是否存在,如果不存在则创建文件夹 
    if (!file.exists()) { 
      file.mkdir(); 
    } 
    try { 
      if (this.file != null) { 
        File f[] = this.getFile(); 
        filePath = new String[f.length]; 
        for (int i = 0; i < f.length; i++) { 
          String fileName = java.util.UUID.randomUUID().toString(); // 采用时间+UUID的方式随即命名 
          String name = fileName + fileFileName[i].substring(fileFileName[i].lastIndexOf(".")); //保存在硬盘中的文件名 
          FileInputStream inputStream = new FileInputStream(f[i]); 
          FileOutputStream outputStream = new FileOutputStream(path+ "\\" + name); 
          byte[] buf = new byte[1024]; 
          int length = 0; 
          while ((length = inputStream.read(buf)) != -1) { 
            outputStream.write(buf, 0, length); 
          } 
          inputStream.close(); 
          outputStream.flush(); 
          //文件保存的完整路径 
          // 如:D:\tomcat6\webapps\struts_ajaxfileupload\\upload\a0be14a1-f99e-4239-b54c-b37c3083134a.png 
          filePath[i] = path + "\\" + name; 
        } 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return "success"; 
  } 
  /** 
   * 文件下载 
   * @return 
   */ 
  public String downloadFile() { 
    String path = downloadFilePath; 
    HttpServletResponse response = ServletActionContext.getResponse(); 
    try { 
      // path是指欲下载的文件的路径。 
      File file = new File(path); 
      // 取得文件名。 
      String filename = file.getName(); 
      // 以流的形式下载文件。 
      InputStream fis = new BufferedInputStream(new FileInputStream(path)); 
      byte[] buffer = new byte[fis.available()]; 
      fis.read(buffer); 
      fis.close(); 
      // 清空response 
      response.reset(); 
      // 设置response的Header 
      String filenameString = new String(filename.getBytes("gbk"),"iso-8859-1"); 
      response.addHeader("Content-Disposition", "attachment;filename="+ filenameString); 
      response.addHeader("Content-Length", "" + file.length()); 
      OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); 
      response.setContentType("application/octet-stream"); 
      toClient.write(buffer); 
      toClient.flush(); 
      toClient.close(); 
    } catch (IOException ex) { 
      ex.printStackTrace(); 
    } 
    return null; 
  } 
  /** 
   * 省略set get方法 
   */ 
}
Nach dem Login kopieren

5、struts配置

<!DOCTYPE struts PUBLIC  
  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
  "http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 
  <package name="ajax_code" extends="json-default"> 
    <!-- 文件上传 --> 
    <action name="fileUploadAction" class="com.itmyhome.FileAction" method="fileUpload"> 
      <result type="json" name="success"> 
        <param name="contentType">text/html</param> 
      </result> 
    </action> 
  </package> 
  <package name="jsp_code" extends="struts-default"> 
    <!-- 文件下载 -->    
    <action name="downloadFile" class="com.itmyhome.FileAction" method="downloadFile">   
      <result type="stream">   
         <param name="contentType">application/octet-stream</param>   
         <param name="inputName">inputStream</param>   
         <param name="contentDisposition">attachment;filename=${fileName}</param>   
         <param name="bufferSize">4096</param>   
      </result>   
    </action>  
  </package> 
</struts>
Nach dem Login kopieren

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

利用ajax提交form表单到数据库详解(无刷新)

基于Ajax和forms组件实现注册功能(含有代码)

ajax 实现微信网页授权登录的方法(图文教程)

Das obige ist der detaillierte Inhalt vonAjaxFileUpload+Struts2 implementiert die Funktion zum Hochladen mehrerer Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Funktionen hat die Doubao-App? Welche Funktionen hat die Doubao-App? Mar 01, 2024 pm 10:04 PM

Die Doubao-App wird viele KI-Erstellungsfunktionen enthalten. Welche Funktionen bietet die Doubao-App? Benutzer können diese Software verwenden, um Gemälde zu erstellen, mit KI zu chatten, Artikel für Benutzer zu generieren, allen bei der Suche nach Liedern zu helfen usw. Diese Funktionseinführung der Doubao-App kann Ihnen die spezifische Betriebsmethode erklären. Im Folgenden finden Sie den spezifischen Inhalt. Schauen Sie sich um! Welche Funktionen bietet die Doubao-App? Antwort: Sie können zeichnen, chatten, Artikel schreiben und Lieder finden. Funktionseinführung: 1. Fragenabfrage: Sie können KI verwenden, um schneller Antworten auf Fragen zu finden, und Sie können jede Art von Fragen stellen. 2. Bildgenerierung: Mithilfe von KI können für jeden unterschiedliche Bilder erstellt werden. Sie müssen jedem nur die allgemeinen Anforderungen mitteilen. 3. KI-Chat: Kann eine KI erstellen, die für Benutzer chatten kann,

Der Unterschied zwischen vivox100s und x100: Leistungsvergleich und Funktionsanalyse Der Unterschied zwischen vivox100s und x100: Leistungsvergleich und Funktionsanalyse Mar 23, 2024 pm 10:27 PM

Sowohl die Mobiltelefone vivox100s als auch x100 sind repräsentative Modelle der Mobiltelefonproduktlinie von vivo. Sie repräsentieren jeweils das High-End-Technologieniveau von vivo in unterschiedlichen Zeiträumen. Daher weisen diese beiden Mobiltelefone gewisse Unterschiede in Design, Leistung und Funktionen auf. In diesem Artikel wird ein detaillierter Vergleich dieser beiden Mobiltelefone im Hinblick auf Leistungsvergleich und Funktionsanalyse durchgeführt, um Verbrauchern dabei zu helfen, das für sie geeignete Mobiltelefon besser auszuwählen. Schauen wir uns zunächst den Leistungsvergleich zwischen vivox100s und x100 an. vivox100s ist mit dem Neusten ausgestattet

Vergleichende Analyse der Funktionen und Leistung von JPA und MyBatis Vergleichende Analyse der Funktionen und Leistung von JPA und MyBatis Feb 19, 2024 pm 05:43 PM

JPA und MyBatis: Vergleichende Analyse von Funktion und Leistung Einführung: In der Java-Entwicklung spielt das Persistenz-Framework eine sehr wichtige Rolle. Zu den gängigen Persistenz-Frameworks gehören JPA (JavaPersistenceAPI) und MyBatis. In diesem Artikel wird eine vergleichende Analyse der Funktionen und Leistung der beiden Frameworks durchgeführt und spezifische Codebeispiele bereitgestellt. 1. Funktionsvergleich: JPA: JPA ist Teil von JavaEE und bietet eine objektorientierte Datenpersistenzlösung. Es wird eine Annotation oder X übergeben

Was genau ist Self-Media? Was sind seine Hauptmerkmale und Funktionen? Was genau ist Self-Media? Was sind seine Hauptmerkmale und Funktionen? Mar 21, 2024 pm 08:21 PM

Mit der rasanten Entwicklung des Internets ist das Konzept der Selbstmedien tief in den Herzen der Menschen verankert. Was genau ist Self-Media? Was sind seine Hauptmerkmale und Funktionen? Als nächstes werden wir diese Probleme einzeln untersuchen. 1. Was genau ist Self-Media? Wir-Medien bedeuten, wie der Name schon sagt, dass Sie die Medien sind. Dabei handelt es sich um einen Informationsträger, über den Einzelpersonen oder Teams selbstständig Inhalte erstellen, bearbeiten, veröffentlichen und über die Internetplattform verbreiten können. Anders als traditionelle Medien wie Zeitungen, Fernsehen, Radio usw. sind Selbstmedien interaktiver und personalisierter und ermöglichen es jedem, zum Produzenten und Verbreiter von Informationen zu werden. 2. Was sind die Hauptmerkmale und Funktionen von Self-Media? 1. Niedrige Hemmschwelle: Der Aufstieg der Selbstmedien hat die Hemmschwelle für den Einstieg in die Medienbranche gesenkt und es werden keine professionellen Teams mehr benötigt.

Einfache Schritte zum Hochladen Ihrer eigenen Musik auf Kugou Einfache Schritte zum Hochladen Ihrer eigenen Musik auf Kugou Mar 25, 2024 pm 10:56 PM

1. Öffnen Sie Kugou Music und klicken Sie auf Ihr Profilbild. 2. Klicken Sie auf das Symbolset in der oberen rechten Ecke. 3. Klicken Sie auf [Musikwerke hochladen]. 4. Klicken Sie auf [Werke hochladen]. 5. Wählen Sie das Lied aus und klicken Sie auf [Weiter]. 6. Klicken Sie abschließend auf [Hochladen].

Wofür wird ein Bluetooth-Adapter verwendet? Wofür wird ein Bluetooth-Adapter verwendet? Feb 19, 2024 pm 05:22 PM

Was macht ein Bluetooth-Adapter? Mit der kontinuierlichen Weiterentwicklung von Wissenschaft und Technologie hat sich auch die drahtlose Kommunikationstechnologie rasant weiterentwickelt und populär gemacht. Unter diesen wird die Bluetooth-Technologie als drahtlose Kommunikationstechnologie für kurze Entfernungen häufig bei der Datenübertragung und Verbindung zwischen verschiedenen Geräten verwendet. Der Bluetooth-Adapter spielt eine wichtige Rolle als wichtiges Gerät, das die Bluetooth-Kommunikation unterstützt. Ein Bluetooth-Adapter ist ein Gerät, das ein Nicht-Bluetooth-Gerät in ein Gerät verwandeln kann, das Bluetooth-Kommunikation unterstützt. Es realisiert eine drahtlose Verbindung und Datenübertragung zwischen Geräten, indem es drahtlose Signale in Bluetooth-Signale umwandelt. Bluetooth-Adapter

So laden Sie Songtexte auf QQ Music hoch So laden Sie Songtexte auf QQ Music hoch Feb 23, 2024 pm 11:45 PM

Mit dem Aufkommen des digitalen Zeitalters sind Musikplattformen zu einer der wichtigsten Möglichkeiten für Menschen geworden, an Musik zu gelangen. Wenn wir jedoch ein Lied hören, stellen wir manchmal fest, dass es keinen Text gibt, was sehr beunruhigend ist. Viele Menschen hoffen, dass beim Anhören von Liedern Liedtexte angezeigt werden können, um den Inhalt und die Emotionen der Lieder besser zu verstehen. QQ Music, eine der größten Musikplattformen in China, bietet Benutzern auch die Funktion zum Hochladen von Liedtexten, damit Benutzer die Musik besser genießen und die Konnotation des Liedes spüren können. Im Folgenden erfahren Sie, wie Sie Liedtexte auf QQ Music hochladen. Erste

Welche Funktionen bietet die Kontoverwaltungssoftware Xiaohongshu? Wie betreibe ich ein Xiaohongshu-Konto? Welche Funktionen bietet die Kontoverwaltungssoftware Xiaohongshu? Wie betreibe ich ein Xiaohongshu-Konto? Mar 21, 2024 pm 04:16 PM

Da Xiaohongshu bei jungen Menschen immer beliebter wird, beginnen immer mehr Menschen, diese Plattform zu nutzen, um verschiedene Aspekte ihrer Erfahrungen und Lebenseinblicke auszutauschen. Die effektive Verwaltung mehrerer Xiaohongshu-Konten ist zu einem zentralen Thema geworden. In diesem Artikel werden wir einige Funktionen der Xiaohongshu-Kontoverwaltungssoftware besprechen und untersuchen, wie Sie Ihr Xiaohongshu-Konto besser verwalten können. Da die sozialen Medien wachsen, müssen viele Menschen mehrere soziale Konten verwalten. Dies ist auch eine Herausforderung für Xiaohongshu-Benutzer. Einige Xiaohongshu-Kontoverwaltungssoftware kann Benutzern dabei helfen, mehrere Konten einfacher zu verwalten, einschließlich automatischer Inhaltsveröffentlichung, geplanter Veröffentlichung, Datenanalyse und anderen Funktionen. Mithilfe dieser Tools können Benutzer ihre Konten effizienter verwalten und die Bekanntheit und Aufmerksamkeit ihres Kontos erhöhen. Darüber hinaus verfügt Xiaohongshu über eine Kontoverwaltungssoftware

See all articles