Maison  >  Article  >  interface Web  >  Comment télécharger des fichiers dans AngularJS ? Introduction détaillée à la fonction de téléchargement d'Angularjs

Comment télécharger des fichiers dans AngularJS ? Introduction détaillée à la fonction de téléchargement d'Angularjs

寻∝梦
寻∝梦original
2018-09-08 15:00:533487parcourir

Cet article parle principalement de la fonction de téléchargement de fichiers de angularjs Savez-vous comment télécharger des fichiers dans Angularjs ? Angularjs est la page front-end. Savez-vous ce qui est utilisé dans le backend ? Lisons cet article maintenant

Utilisez AngularJS pour télécharger des fichiers

  • Le frontend est la page

    Angular

  • et le backend utilise

    SpringBoot/SpirngMVC


pour télécharger des fichiers

  • html

<p>
    <input id="fileUpload" type="file" />
    <button ng-click="uploadFile()">上传</button></p>
  • js

        $scope.upload = function(){
            var form = new FormData();            var file = document.getElementById("fileUpload").files[0];
            form.append(&#39;file&#39;, file);            $http({
                method: &#39;POST&#39;,
                url: &#39;/upload&#39;,
                data: form,
                headers: {&#39;Content-Type&#39;: undefined},
                transformRequest: angular.identity
            }).success(function (data) {
                console.log(&#39;upload success&#39;);
            }).error(function (data) {
                 console.log(&#39;upload fail&#39;);
            })
        }
Remarque :

  • Le

    par défaut d'AngularJS est 'Content-Type' En définissant application/json, le navigateur ne nous aidera pas seulement à définir 'Content-Type': undefined sur Content-Type, mais remplissez également le multipart/form-data actuel boundary

  • Si défini manuellement sur :

    , une exception sera levée en arrière-plan : 'Content-Type': multipart/form-datathe request was rejected because no multipart boundary was found

    <.>
  • est une chaîne de caractères générée aléatoirement, utilisée pour séparer le début et la fin du texte

    boundary

  • En définissant
  • ,

    sérialisera notre transformRequest: angular.identity, ou vous ne pouvez pas ajouter anjularjs transformRequest functionformdata object

    Backend
    @RequestMapping("/upload")    public void uploadFile(@RequestParam(value = "file" , required = true) MultipartFile file) {        //deal with file
    }
Note

    Le fichier doit passer l'annotation @RequestParam pour être obtenu, et la valeur doit être spécifiée pour obtenir
    De cette façon, le fichier téléchargé est terminé
Transmettre d'autres paramètres lors du téléchargement du fichier

    html
    <p>
        <input id="fileUpload" type="file" />
        <button ng-click="ok()">上传</button><br>
        <input ng-model="user.username" />
        <input ng-model="user.password" />
    </p>
    js
    $scope.ok = function () {
        var form = new FormData();        var file = document.getElementById("fileUpload").files[0];   
        var user =JSON.stringify($scope.user);

        form.append(&#39;file&#39;, file);
        form.append(&#39;user&#39;,user);        $http({
            method: &#39;POST&#39;,
            url: &#39;/addUser&#39;,
            data: form,
            headers: {&#39;Content-Type&#39;: undefined},
            transformRequest: angular.identity
        }).success(function (data) {
            console.log(&#39;operation success&#39;);
        }).error(function (data) {
            console.log(&#39;operation fail&#39;);
        })
    };
    Remarque

    • Vous devez convertir l'objet en chaîne avant de l'ajouter au formulaire, sinon il sera directement converti en chaîne [Objet, objet]
    backend (si vous voulez en voir plus, rendez-vous sur PHP chinois (Network
  • Manuel de développement AngularJS

    ) >

    @RequestMapping("/upload")    public Map<String, Object> upload(@RequestParam(value = "file") MultipartFile file, @RequestParam(value = "user", required = true) String user) {        try (FileInputStream in = (FileInputStream) headImg.getInputStream();
             FileOutputStream out = new FileOutputStream("filePathAndName")) {            //将Json对象解析为UserModel对象
            ObjectMapper objectMapper = new ObjectMapper();
            UserModel userModel = objectMapper.readValue(user, UserModel.class);            //保存文件到filePathAndName
            int hasRead = 0;            byte[] bytes = new byte[1024];            while ((hasRead = in.read(bytes)) > 0) {                out.write(bytes, 0, hasRead);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
Utilisez
pour télécharger des fichiers

    Cet article se termine ici (si vous voulez en voir plus, rendez-vous sur PHP (site Web chinois
  • Manuel d'utilisation AngularJS

    )) , si vous avez des questions, vous pouvez laisser un message ci-dessous. ObjectMappercom.fasterxml.jackson.databind.ObjectMapper

AngularJS

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:
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