Maison > Java > javaDidacticiel > Comment implémenter la fonction de téléchargement d'un seul fichier et de plusieurs fichiers dans Spring Webflow dans le développement Java

Comment implémenter la fonction de téléchargement d'un seul fichier et de plusieurs fichiers dans Spring Webflow dans le développement Java

WBOY
Libérer: 2023-05-22 15:25:06
avant
1036 Les gens l'ont consulté

Télécharger un seul fichier

Préparation

1 Si vous utilisez Spring Security dans votre projet, reportez-vous à l'article précédent, utilisez la deuxième méthode de l'article précédent et supprimez le MultipartFilter (si configuré), sinon , vous n'obtiendrez pas le fichier

2. Les variables du processus (telles que les variables définies avec la balise var) doivent implémenter l'interface sérialisable.

Processus d'implémentation

Ajoutez les dépendances suivantes au fichier pom.xml :

<!-- 支持文件上传 -->
  <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>
Copier après la connexion

Ajoutez l'analyseur de téléchargement de fichier à spring-servlet.xml (fichier de configuration Spring MVC) :

<!-- 文件上传解析器-->
   <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>
Copier après la connexion

Classe d'entité, n'oubliez pas d'implémenter le Interface sérialisable, et le type d'attribut est 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;
  }
}
Copier après la connexion

Code de définition du processus, rien de spécial :

<?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>
Copier après la connexion

Télécharger le code du formulaire, aucune configuration particulière requise :

<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>
Copier après la connexion

C'est tout

Télécharger plusieurs fichiers

Télécharger un seul fichier peut être implémenté avec de légères modifications basées sur le fichier unique précédemment téléchargé.

Implémentation

Tout d'abord, la classe d'entité doit être modifiée, en utilisant List pour stocker plusieurs fichiers :

@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;
  }
}
Copier après la connexion

Le formulaire de téléchargement doit également être modifié :

<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>
Copier après la connexion

Ajoutez simplement un attribut multiple="multiple".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal