Barre oblique inverse d'échappement dans la chaîne javascript
J'ai besoin d'afficher le nom du fichier actuellement sélectionné (dans <input type="file">
élément).
Tout va bien, le seul problème est que je reçois ce genre de chaîne "C:\fakepath
\typog_rules.pdf" (browset met automatiquement ce que la valeur de l'élément d'entrée).
Quand j'essaie de diviser la chaîne en '\'
ou '\\'
il échoue en raison de la non échappés des barres obliques. Essaie de trouver/remplacer les barres obliques échoue également. Est-il un moyen de contourner cela? J'ai besoin de ce travail, au moins dans l'Opéra et IE (parce que dans les autres navigateurs je peux utiliser FileReader)
E. G. je suis "C:\fakepath\typog_rules.pdf" en tant qu'entrée et que vous souhaitez obtenir "typog_rules.pdf" en sortie.
- Pouvez-vous nous montrer le code et le message d'erreur que vous obtenez?
Vous devez vous connecter pour publier un commentaire.
Pour des raisons de sécurité, il n'est pas possible obtenir le vrai, le chemin complet d'un fichier, visé par l'intermédiaire d'un
<input type="file" />
élément.Cette question déjà mentionne, et des liens vers d'autres Débordement de Pile questions à ce sujet.
réponse Précédente, de conserver une référence pour les futurs visiteurs qui arrivent à cette page via le titre, les balises et la question.
La barre oblique inverse a échappé.
En JavaScript, la barre oblique est utilisée pour échapper les caractères spéciaux, tels que des sauts de ligne (
\n
). Si vous souhaitez utiliser un backslash, une double barre oblique inverse doit être utilisé.Donc, si vous voulez faire correspondre les deux barres obliques, quatre barres obliques inverses doit être utilisé. Par exemple,
alert("\\\\")
affichera une boîte de dialogue contenant les deux barres obliques."C:\\fake\\path\\file"
dans["C:", "fake", "path", "file"]
? Vous devez préciser votre question, et ajouter de la sortie courant, le réel de l'entrée, de la sortie attendue et le code correspondant.<input type=file>
élément.\f
(form feed),\t
(onglet). Utilisation"C:\\fakepath\\typog_rules.pdf".split("\\");
à la place. Deux barres obliques inverses sont nécessaires pour voir une barre oblique inverse dans une chaîne de caractères."C:\fakepath\alex-dukal_stamp-brushes_v2.abr".lastIndexOf('\\')
retourne -1\f
est évadé alimentation caractère. Ce n'est pas une "barre oblique suivie par f". Si vous souhaitez mettre un antislash dans une chaîne de caractères, y échapper: `\`. Vous n'avez pas à vous soucier de les fuites si vous les comprenez. Rappelez-vous juste de s'échapper de la barre oblique inverse, lorsque vous avez l'intention de se référer à une barre oblique inverse dans le code source. Lorsque vous obtenez l'entrée de l'utilisateur, les barres obliques inverses n'ont pas cette signification particulière.$("[type=file]").val()
retourne"C:\fakepath\alex-dukal_stamp-brushes_v2.abr"
, mais quand je tape"C:\fakepath\alex-dukal_stamp-brushes_v2.abr"
puis il retunrs échappé à la version"C:akepathalex-dukal_stamp-brushes_v2.abr"
. Moyens$("[type=file]").val()
retourne double échappé à la chaîne qui la préserve des barres obliques. J'ai été jouer avec la matière première chaîne dans une console chromée et prise à tort et à travers. Merci L'Homme.Je pense que c'est plus de la réponse que vous cherchez:
Échapper le caractère barre oblique inverse.
Ajouter une entrée de l'id de l'élément et de faire quelque chose comme ça:
Légèrement hacky, mais il fonctionne:
JS: