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!