Maison  >  Article  >  Java  >  Comment implémenter la fonction de téléchargement de dossier en Java

Comment implémenter la fonction de téléchargement de dossier en Java

PHPz
PHPzavant
2023-05-10 20:52:042712parcourir

1. Comment configurer le composant de téléchargement sur le front-end et télécharger des ressources sur le service backend

1) Nous devons d'abord créer un nouveau formulaire pour soumettre des dossiers

1. Ajoutez un composant de soumission d'entrée avec type=file et ajoutez le logo webkitdirectory. Utilisez la fonction de téléchargement de dossier

2. Ajoutez l'événement @change="uploadSoundCodeFolder" Lorsque nous téléchargeons le dossier, la fonction uploadSoundCodeFolder() sera déclenchée pour gérer la logique de téléchargement

<form id="uploadSoundCodeFolderForm" 
 method="post" 
enctype="multipart/form-data">
  <input id="fileFolder" name="fileFolder" type="file" 
 		@change="uploadSoundCodeFolder" webkitdirectory>
</form>

uploadSoundCodeFolder(). La logique d'implémentation est la suivante

uploadSoundCodeFolder(e){
      this.uploadSoundCodeLoading = true;
      //获取到选中的文件夹内的所有文件
      //files 为一个集合
      //可通过遍历 files 的方式获取到每个文件的大小等数据,来实现大小限制等需求
      let files = e.target.files;
		
      //中间省略大小限制等需求......
      
      //获取表单数据
      let formData = new FormData(document.getElementById("uploadSoundCodeFolderForm"));

	  //调用后台服务方法来提交该表单数据
	  uploadSoundCode(formData).then((res)=>{
                _this.$message.success("上传成功")
				//上传成功后清空表单数据
      			$("#fileFolder").val(&#39;&#39;);
      })
}

2) Ensuite, nous ajoutons quelques boutons dans notre propre cadre pour déclencher le formulaire caché

L'avantage est qu'il utilise la fonction de téléchargement du dossier de formulaire sans utiliser son interface utilisateur

<!-- 首先创建一个按钮用来触发上传事件 uploadSoundCodeBtn() -->
<el-button  v-loading="uploadSoundCodeLoading" 
@click="uploadSoundCodeBtn">
上传文件夹
</el-button>
/*上传事件触发的方法*/
uploadSoundCodeBtn(){
  $("#fileFolder").click();
},

2. Comment recevoir et traiter les données du formulaire de dossier en arrière-plan

Ici, nous utilisons le type List fileFolde pour accepter la collection de fichiers envoyée depuis le front-end fileFolde est le nom sous la forme

@RequestMapping(value="/uploadSoundCode",method= RequestMethod.POST)
public AjaxResult uploadSoundCode(List<MultipartFile> fileFolde) throws IOException {
        String soundCodeUrl = HereUtil.uploadSoundCode(fileFolder);
        return AjaxResult.success(soundCodeUrl);
    }

Ensuite, enregistrez simplement le fichier sur le serveur en fonction du. affaires

public static String uploadSoundCode(List<MultipartFile> files) throws IOException {

        for (MultipartFile file : files) {
            String fileName = file.getOriginalFilename();
            if (StrUtil.isBlank(fileName)){
                continue;
            }
			
			//上传后的URL全路径
            String fullFilePath = "上传的跟路径" + fileName;
            FileUtil.writeFromStream(file.getInputStream(), fullFilePath);
        }

        return "";
    }

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