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
WBOYavant
2023-05-22 15:25:061053parcourir

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>

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>

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;
  }
}

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>

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>

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;
  }
}

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>

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer