2009-06-04 7 views

Répondre

0

Cette expression fera l'affaire.

^.*/(?<filename>[^/]+?\.[^/]+)$ 
 
    ^    Anchor to the begining of the string 
    .*    Any character zero or more times 
    /    Slash 
    (?<filename>  Named group 'filename' 
     [^/]+?   Not a slash at least once and captured lazily 
     \.    One file extension separator (dot) 
     [^/]+    Not a slash at leats once 
    )     End of named group 
    $     Anchor to the end of the string 
+0

Merci de ne pas lire entre les lignes :) –

+0

J'ai lu entre les lignes au début. Mais bien qu'il ne résout pas le cas général du problème, il résoudra des cas spéciaux et vous êtes probablement après un cas particulier comme l'indique la question modifiée. –

2

Vous pouvez inspecter la fin pour voir si elle ressemble à une extension de fichier, mais les URL ne correspondent pas réellement aux fichiers; Et si l'URL est réécrite?

Si vous voulez déterminer ce qu'est une URL donnée résolu, vous pourriez émettre une demande HEAD et inspecter les en-têtes content-type et content-disposition pour voir si le contenu est d'un type qui implique un fichier sous-jacent, mais même ce n'est pas l'épreuve des balles, puisque les images, PDF, etc. pourraient tous être générés dynamiquement.

1

Vous ne pouvez pas.

E.g. http://example.com/files/readme peut être un fichier texte ou un dossier (les OS de style * nix n'incluraient pas d'extension .txt).

Même s'il existe une extension de fichier, il peut n'y avoir aucun fichier, le code côté serveur traitant l'URL pour créer du contenu (par exemple un ASP.NET HttpHandler).

Pourquoi essayez-vous de faire cela? Si vous souhaitez détecter si l'URL renvoie un fichier, vous pouvez deviner avec l'extension (en gardant à l'esprit que les applications sont libres d'inventer la sienne), mais le seul moyen consiste à effectuer une requête HTTP HEAD et vérifier le type de contenu retourné (mais encore une fois vous avez le même problème avec ce qui est un type MIME de fichier valide).

+0

i besoin de détecter si une URL saisie par un utilisateur est une tentative de créer un lien vers un fichier sur le système ou non. –

+0

@Adam: étendu. – Richard

Questions connexes