Heim >Java >javaLernprogramm >So implementieren Sie die Funktion zum Hochladen einzelner Dateien und mehrerer Dateien im Spring Webflow in der Java-Entwicklung

So implementieren Sie die Funktion zum Hochladen einzelner Dateien und mehrerer Dateien im Spring Webflow in der Java-Entwicklung

WBOY
WBOYnach vorne
2023-05-22 15:25:061052Durchsuche

Eine einzelne Datei hochladen

Vorbereitung

1 Wenn Sie in Ihrem Projekt Federsicherheit verwenden, lesen Sie den vorherigen Artikel, verwenden Sie die zweite Methode im vorherigen Artikel und entfernen Sie den MultipartFilter (falls konfiguriert). Andernfalls , erhalten Sie die Datei nicht

2 Variablen im Prozess (z. B. mit dem var-Tag definierte Variablen) müssen die Serializable-Schnittstelle implementieren.

Implementierungsprozess

Fügen Sie die folgenden Abhängigkeiten zur Datei pom.xml hinzu:

<!-- 支持文件上传 -->
  <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.2.1</version>
  </dependency>
  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
  </dependency>

Fügen Sie den Datei-Upload-Parser zu spring-servlet.xml (Spring MVC-Konfigurationsdatei) hinzu:

<!-- 文件上传解析器-->
   <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- one of the properties available; the maximum file size in bytes -->
    <property name="maxUploadSize" value="10485760"/>
  </bean>

Entitätsklasse, denken Sie daran, die zu implementieren Serialisierbare Schnittstelle und der Attributtyp ist MultipartFile:

@Component
public class GoodsEntity implements Serializable{
  private static final long serialVersionUID = 1L;
  private MultipartFile images;
  public MultipartFile getImages() {
    return images;
  }
  public void setImages(MultipartFile images) {
    this.images = images;
  }
}

Prozessdefinitionscode, nichts Besonderes:

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/webflow
   http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
     <var name="goods" class="com.huanle.model.entity.GoodsEntity"/>
     <view-state id="viewfirst" view="/views/user/releasegoods/release_first.jsp" model="goods">
      <transition on="submit" to="viewsecond"></transition>
     </view-state>
     <view-state id="viewsecond" view="/views/user/releasegoods/second.jsp" model="goods">
      <transition on="submit" to="performReleaseGoodsAction"></transition>
     </view-state>
     <action-state id="performReleaseGoodsAction" >
       <evaluate expression="goodsService.save(goods)"></evaluate>
       <transition to="returntouserindex"></transition>
     </action-state>
     <end-state id="returntouserindex" view="/views/user/seller/index.jsp"></end-state>
     <global-transitions>
      <transition on="cancel" to="returntouserindex"></transition>
     </global-transitions>
</flow>

Formularcode hochladen, keine spezielle Konfiguration erforderlich:

<form:form action="${flowExecutionUrl}&_eventId=submit&${_csrf.parameterName}=${_csrf.token}" method="post" commandName="goods" enctype="multipart/form-data">
  <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"/>
 商品图片:<form:input id="images" path="images" type="file" multiple="multiple" />
 <input type="submit" >
</form:form>

Das ist alles

Mehrere Dateien hochladen

Eine einzelne Datei hochladen kann mit geringfügigen Modifikationen basierend auf der zuvor hochgeladenen Einzeldatei implementiert werden.

Implementierung

Zuerst muss die Entitätsklasse geändert werden, wobei List zum Speichern mehrerer Dateien verwendet werden soll:

@Component
public class GoodsEntity implements Serializable{
  private static final long serialVersionUID = 1L;
  private List<MultipartFile> images;
  public List<MultipartFile> getImages() {
    return images;
  }
  public void setImages(List<MultipartFile> images) {
    this.images = images;
  }
}

Das Upload-Formular muss ebenfalls geändert werden:

<form:form action="${flowExecutionUrl}&_eventId=submit&${_csrf.parameterName}=${_csrf.token}" method="post" commandName="goods" enctype="multipart/form-data">
  <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"/>
商品图片:<form:input path="images" type="file" multiple="multiple"/>
<input type="submit" value="提交">
</form:form>

Fügen Sie einfach ein multiple="multiple"-Attribut hinzu.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Funktion zum Hochladen einzelner Dateien und mehrerer Dateien im Spring Webflow in der Java-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen