2017-08-31 3 views
0

J'ai le code suivant qui accepte uniquement les fichiers image et pdf, mais si je change le format de la fenêtre de sélection de fichier (je pense qu'il est fourni par Chrome lui-même) Les fichiers personnalisés à Tous les fichiers, il accepte tous les formats de fichiers, y compris les dossiers zip.ng-file-upload: Changer le format des fichiers personnalisés à Tous les fichiers, il accepte les types de fichiers bloqués à télécharger

<button type="button" class="btn-submit upload for-hover smooth-hover" 
     data-prod-idx="{{index}}" data-prod-id="{{prod.ProductId}}" 
     ng-click="vm.onUpload($event, index, prod.ProductId)" 
     ngf-select="vm.uploadAttachments($event, $files, $invalidFiles)" 
     multiple accept="application/pdf, image/*" 
     ngf-capture="'camera'" 
     ngf-max-size="5MB">Upload Documents 
</button> 

Comment arrêter le téléchargement de fichiers, sauf pour l'image et pdf? (Pas JQuery s'il vous plaît, pour tous les navigateurs)

J'ai essayé d'utiliser des valeurs différentes en accepter, mais cela ne me aider.

+0

Si vous voulez être absolument sûr qu'un utilisateur ne va pas télécharger quelque chose d'autre qu'une image ou PDF, vous voulez jeter un côté serveur d'erreur. Pour le frontal, consultez la question SO suivante: [https://stackoverflow.com/questions/34654073/how-stop-file-upload-event-using-javascript](https://stackoverflow.com/questions/ 34654073/how-stop-file-upload-événement-using-javascript) –

+0

Copie possible de [Comment arrêter le téléchargement d'un fichier en utilisant javascript] (https://stackoverflow.com/questions/34654073/how-stop-file-upload- event-using-javascript) –

+0

Utilisez la propriété [file.type] (https://developer.mozilla.org/en-US/docs/Web/API/File/type) de chaque [objet Fichier] (https://developer.mozilla.org/en-US/docs/Web/API/File) pour déterminer s'il s'agit d'un type inapproprié. Dans la fonction 'uploadAttachments', ignorez le téléchargement si le type est inapproprié. – georgeawg

Répondre

1

Utilisez la propriété file.type de chaque File object pour déterminer si c'est un type inapproprié. Dans la fonction uploadAttachments, ignorez le téléchargement si le type est inapproprié.

The DEMO

angular.module("app",['ngFileUpload']) 
 
.controller("ctrl", function() { 
 
    vm = this; 
 
    vm.uploadAttachments = (event, fileList) => { 
 
    console.log("fileList.length=", fileList.length); 
 
    var validList = fileList.filter(f => { 
 
     if (f.type.startsWith("application/pdf")) return true; 
 
     if (f.type.startsWith("image/")) return true; 
 
     console.log("skipping", f.name); 
 
     return false; 
 
    }) 
 
    console.log("validList.length=",validList.length); 
 
    }; 
 
})
<script src="//unpkg.com/angular/angular.js"></script> 
 
    <script src="//unpkg.com/ng-file-upload/dist/ng-file-upload-all.js"></script> 
 
    <body ng-app="app" ng-controller="ctrl as vm"> 
 
    <button type="button" class="btn-submit upload for-hover smooth-hover" 
 
     data-prod-idx="{{index}}" data-prod-id="{{prod.ProductId}}" 
 
     ng-click="vm.onUpload($event, index, prod.ProductId)" 
 
     ngf-select="vm.uploadAttachments($event, $files, $invalidFiles)" 
 
     multiple accept="application/pdf, image/*" 
 
     ngf-capture="'camera'" 
 
     ngf-max-size="5MB">Upload Documents 
 
    </button> 
 
    </body>