当前位置:网站首页>Téléchargement et téléchargement des fichiers nécessaires au développement
Téléchargement et téléchargement des fichiers nécessaires au développement
2022-06-11 18:36:00 【C / X 330.】
Catalogue des articles
Bonjour tout le monde,Je dois continuer à étudier tous les jours Amélioration de soi Cx_330
Téléchargement et téléchargement de fichiers
Description
Ce billet de blog est basé surreggieProjets, Les techniques utilisées comprennentSpringBoot MybatisPlusTransfert de fichiers à l'avant et à l'arrière de la mise en oeuvre finale de l'image dans L'effet de l'affichage à l'avant,Apprenez ce petit point de connaissance et C'est nécessaire!
Téléchargement de fichiers à maîtriser
- Pour compléter le téléchargement et le téléchargement de fichiers sur le navigateur,Tout d'abord, nous avons besoin d'une certaine connaissance des connaissances de première ligne
- Photo avecTableauxTélécharger pour le cadre
- MEthodPourPost
- Input DeTypePour File
🧊Analyse du Front de bataille
- Exemple
- Tout d'abord, Ouvrir la page de téléchargement du fichier à accéder
- Ensuite, nous choisissons une image au hasard après avoir allumé
- On va trouver Quand on clique sur une image , Deux fichiers apparaissent sur la console du navigateur
- Télécharger des fichiers
- Télécharger le fichier
- Ce processus est en fait un transfert d'information avec le serveur
- Ouvrir le fichier de téléchargement
- Vous pouvez découvrir que le mode de demande est Post Et ensuite demander notre serveur via un chemin de requête , Après réception par notre serveur pour un traitement ultérieur
- Je vois., Le message que le serveur a répondu est le nom de l'image
- Cliquez sur le fichier pour le télécharger
- Deux messages importants peuvent être vus
- AdoptionGetComment demander
- Le paramètre passé est le nom de l'image
- Parce que la réponse côté serveur est en fait de montrer l'image directement au navigateur ,Donc il n'y a pas de valeur de retour
Code d'arrière - plan en direct
- Téléchargement et téléchargement de fichiers
@RestController @Slf4j @RequestMapping("/common") public class CommonConntroller { //AdoptionelExpression Peut être utiliséyml Chemin dans le fichier de configuration @Value("${reggie.path}") private String basePath; /** * Téléchargement de fichiers * @param file * @return */ @PostMapping("/upload") public R<String> upload(MultipartFile file){ //name C'est un fichier temporaire Doit être transféré au doigt filePosition fixe Sinon, le fichier temporaire sera supprimé lorsque cette demande sera remplie log.info(file.toString()); //Obtenir le nom de fichier original String originalFilename = file.getOriginalFilename(); //Cette méthode n'est pas recommandée Parce que quand le nom du fichier est le même L'image suivante écrasera l'image précédente String s = originalFilename.substring(originalFilename.lastIndexOf(".")); //Peut être utiliséUUIDGénérer un nom de fichier aléatoire String imageName = UUID.randomUUID().toString() + s; //JugementbasePathExiste - t - il un répertoire? S'il n'existe pas, créez d'abord le répertoire File f = new File(basePath); if(!f.exists()){ f.mkdirs(); } try { // Conversion du fichier à l'emplacement spécifié lors de la descente file.transferTo(new File(basePath+imageName)); } catch (IOException e) { e.printStackTrace(); } return R.success(imageName); } /** * Téléchargement de fichiers * @param name * @param response */ @GetMapping("/download") public void dowmLoad(String name, HttpServletResponse response){ try { //Par flux d'entrée Lire le contenu du fichier FileInputStream inputStream = new FileInputStream(new File(basePath+name)); //Écrire le fichier dans le navigateur via le flux de sortie Afficher l'image dans le navigateur response.setContentType("image/jpeg"); ServletOutputStream outputStream = response.getOutputStream(); int length=0; byte[] bytes = new byte[1024]; while ((length=inputStream.read(bytes))!=-1){ outputStream.write(bytes,0,length); outputStream.flush(); } //FermerioRessources outputStream.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }
- Regarde - moi ça. BasPath Est déjà défini dans le profil ,Pour pouvoir passer directement parel La forme de l'expression est utilisée
- L'avantage est que vous pouvez spécifier dynamiquement l'adresse du fichier à télécharger ,Pour un entretien ultérieur
Il est également utilisé lors du téléchargement de fichiers UUIDCette méthode
UUID.randomUUID().toString()L'avantage est d'éviter la duplication des noms de fichiers .
Il y a un petit point de connaissance que tout le monde ignore
String s = originalFilename.substring(originalFilename.lastIndexOf("."));Passe d'abord.lastIndexOfComment trouver.Index des indices pour,Et en passantsubstringDiviser Notez que cette chaîne divisée contient .
Et si le fichier est téléchargé
FileInputStream inputStream = new FileInputStream(new File(basePath+name));Cette ligne de code peut nécessiter plus d'attention , Peut faire des erreurs accidentelles , Construire un flux d'entrée d'octets ,Innew file Si le chemin exact de cette image est le nom complet
- Le reste est un peu IOQuelques opérations de base, Tant que les fondations sont solides , Le reste n'est pas un problème
边栏推荐
- 初识企业级平台
- Niu Ke swipes the question -- converting a string to an integer
- 高并发架构设计
- . Net core redis hyperloglog type
- Monitoring loss functions using visdom
- 【无标题】
- Quanzhi technology T3 development board (4-core arm cortex-a7) - video development case
- Why is ti's GPMC parallel port more often used to connect FPGA and ADC? I give three reasons
- Niu Ke's questions -- two sorting methods
- Startup process of datanode
猜你喜欢

北京邮电大学2023级工商管理硕士MBA(非全日制)已开启

全志科技T3开发板(4核ARM Cortex-A7)——MQTT通信协议案例

Common operations of Visio

Common interview questions of network and concurrent programming

On the problem that the while loop condition in keil does not hold but cannot jump out

Map and set
![[golang] leetcode - 292 Nim games (Mathematics)](/img/82/54c3f6be9d08687b42cba0487380f0.png)
[golang] leetcode - 292 Nim games (Mathematics)

全志T3开发板(4核ARM Cortex-A7)——系统启动阶段LOGO显示详解

vim常用命令

264 Concepts
随机推荐
H.264概念
[c language] shift elements after sorting elements of an array
Niuke brush questions part7
5 minutes to understand the red, blue and purple in the attack and defense drill
Oracle高级数据库复习
Mysql从0到1的完全深入学习--阶段二---基础篇
在 SAP Kyma 上部署一个 Go MSSQL API Endpoint
[golang] leetcode - 349 Intersection of two arrays (hash table)
On the problem that the while loop condition in keil does not hold but cannot jump out
TR-069 protocol introduction
Force deduction 32 questions longest valid bracket
Mysql深入完全学习---阶段1---学习总述
全志T3开发板(4核ARM Cortex-A7)——系统启动阶段LOGO显示详解
TR-069协议介绍
使用Visdom对损失函数进行监控
[c language] output students' names and scores in descending order of scores with structures
IEDA 底层菜单菜单简介
「案例分享」基于 AM57x+ Artix-7 FPGA开发板——PRU开发手册详解
[Golang]力扣Leetcode - 292. Nim 游戏(数学)
Signal processing and capture