web-dev-qa-db-fra.com

Comment restreindre le type de fichier dans le contrôle FileUpload

Est-il possible d'autoriser le contrôle fileupload à n'afficher que les images?

Lorsque nous cliquons sur le bouton Parcourir, il ne devrait afficher que des images.

25
Geeth

Non, sur le Web, vous ne pouvez pas du côté client, évidemment du côté serveur, vous pouvez faire des choses incroyables. Pour ce genre de chose, les programmeurs utilisent normalement Activex, flash ou similaire.

6
netadictos

En 2015, les navigateurs Web prennent en charge l'attribut input accept, vous pouvez donc le faire:

<asp:FileUpload ID="fileUploader" runat="server" accept=".png,.jpg,.jpeg,.gif" />

Gardez à l'esprit que Visual Studio peut vous montrer un message à ce sujet en tant qu'attribut non valide de l'outil FileUpload ASP, cependant.

51
Tonko Boekhoud

Je n'ai trouvé aucune solution directe à ce problème.

Voici ma solution de contournement en utilisant RegularExpressionValidator:

<asp:FileUpload ID="fuImportImage" runat="server" />
<asp:RegularExpressionValidator ID="regexValidator" runat="server"
     ControlToValidate="fuImportImage"
     ErrorMessage="Only JPEG images are allowed" 
     ValidationExpression="(.*\.([Jj][Pp][Gg])|.*\.([Jj][Pp][Ee][Gg])$)">
</asp:RegularExpressionValidator>
22

Vous ne pouvez pas strictement restreindre le type de fichier, mais si le navigateur le prend en charge, vous pouvez le faire afficher initialement uniquement un certain type de fichier:

<form method="post" action="blahblah.blah">
  <input type="file" name="image" id="image" accept="image/png, image/jpeg" />
</form>
13
iconoclast
//VALIDATE FILE EXTENTION
var _validFileFlag;
function fValidFileExt(vfilePath){
  var vFileName=vfilePath.split('\\').pop();
  var vFileExt=vfileName.split('.').pop();
  if(vFileExt.toUpperCase()=="JPEG" || vFileExt.toUpperCase()=="JPG"){
     _validFileFlag = true;
  } 
  _validFileFlag = false;
} 

<asp:FileUpload ID="FileUpload1" onchange="fValidFileExt(this.value);" runat="server"  />

Cochez "_validFileFlag" lors de l'enregistrement des données/téléchargement ..

3
Somnath R

En supposant que vous voulez uniquement télécharger des images.

Vous pouvez vérifier la propriété ContentType du fichier (c'est-à-dire image/gif).

Jetez un oeil ici pour un exemple: http://www.15seconds.com/issue/061116.htm

2
David Neale

Avec plaine <input type="file">, Je crains que ce ne soit pas possible côté client.

Cependant, certains téléchargeurs tiers tels que SWFUpload fournissent cette fonctionnalité.

1
Gant

Utilisez l'attribut accept pour afficher uniquement les images dans le navigateur de fichiers comme ci-dessous -

<asp:FileUpload ID="FileUploadFileType" runat="server" CssClass="form-control" accept=".png,.jpg,.jpeg,.gif" />

avec asp.nets RegularExpressionValidator pour valider le type de fichier sélectionné avec un message de validation.

<asp:RegularExpressionValidator ID="RegExValFileUploadFileType" runat="server"
                        ControlToValidate="FileUploadFileType"
                        ErrorMessage="Only .jpg,.png,.jpeg,.gif Files are allowed" Font-Bold="True"
                        Font-Size="Medium"
                        ValidationExpression="(.*?)\.(jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF)$"></asp:RegularExpressionValidator>
1
Ravindra Vairagi