En développement web, il est souvent nécessaire de développer le module "téléchargement". Un exemple simple est donné ci-dessous.
Côté serveur, utilisez le développement java :
@RequestMapping(value = "download.html", method = RequestMethod.GET) public void download(String resourceid, HttpServletRequest request, HttpServletResponse response) { response.setContentType("charset=UTF-8"); File file = new File(path); response.setHeader("Content-Disposition", "attachment; filename=a"); BufferedInputStream bis = null; BufferedOutputStream bos = null; OutputStream fos = null; InputStream fis = null; try { fis = new FileInputStream(file.getAbsolutePath()); bis = new BufferedInputStream(fis); fos = response.getOutputStream(); bos = new BufferedOutputStream(fos); int bytesRead = 0; byte[] buffer = new byte[5 * 1024]; while ((bytesRead = bis.read(buffer)) != -1) { bos.write(buffer, 0, bytesRead); } bos.flush(); }catch(E e){ }finally { try { bis.close(); bos.close(); fos.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } }
Lorsque nous demandons cette adresse sur le front-end, le serveur trouve d'abord le fichier, définit l'en-tête de réponse, puis l'envoie au navigateur via le flux.
Si le navigateur constate que le corps principal de la réponse est un fichier de flux dans l'en-tête, il appellera automatiquement la fenêtre Enregistrer sous pour permettre à l'utilisateur d'enregistrer le téléchargement.
La clé ici est l'attribut d'en-tête Content-Disposition. Content-Disposition est une extension du protocole MIME et est utilisé pour indiquer au client comment afficher le fichier joint.
Il peut être défini sur deux valeurs :
en ligne //Ouvrir en ligne
pièce jointe //Télécharger en pièce jointe
La valeur que nous définissons ici est pièce jointe, elle peut donc être reconnue comme pièce jointe et téléchargée.
Ce qui précède décrit comment écrire côté serveur, et ce qui suit décrit comment demander le front-end.
Il existe trois façons de faire des requêtes frontales :
1.Formulaire
<form action='download.html' method='post'> <input type='submit'/> </form>
2.iframe
var iframe = "<iframe style='display:none' src='download.html'></iframe>" body.append(iframe);
Lorsque l'iframe est ajoutée au corps, le lien de téléchargement sera automatiquement demandé.
3.ouvrir
window.open("download.html");