<input type="file" id="file-id" name="file_name" onchange="theimage();">
C'est mon bouton de téléchargement.
<input type="text" name="file_path" id="file-path">
Il s'agit du champ de texte dans lequel je dois indiquer le chemin complet du fichier.
function theimage(){
var filename = document.getElementById('file-id').value;
document.getElementById('file-path').value = filename;
alert(filename);
}
Voici le javascript qui résout mon problème. Mais dans la valeur d'alerte, cela me donne
C:\fakepath\test.csv
et Mozilla me donne :
test.csv
Mais je veux full url
. Comment résoudre ce problème ?
EDIT : Si cela est dû à un problème de sécurité du navigateur, quelle est l'autre façon de procéder ?
49 votes
Il s'agit de l'implémentation de la sécurité du navigateur - le navigateur vous protège de l'accès à la structure de votre disque. Il pourrait être utile d'expliquer pourquoi vous voulez le chemin complet.
1 votes
Que voulez-vous dire par url complète ? Adresse du fichier téléchargé ?
0 votes
@gor, oui. Disons que mon fichier est dans '/home/..../.../mydir/test.csv'.
4 votes
Pour mémoire, IE ne donne le bit "fakepath" que parce qu'il ne voulait pas que les serveurs qui "s'attendent" à un chemin d'accès se cassent. Sinon, comme pour les autres navigateurs, pour des raisons de sécurité, vous n'obtiendrez que le nom du fichier (pas de chemin). Plus important encore, à moins que vous n'ayez des intentions malveillantes, je ne vois pas en quoi le fait de connaître le chemin d'accès peut être utile.
0 votes
@scunliff, j'ai un bouton de téléchargement sur une pop. En utilisant ce JS, j'ai essayé de passer l'url complète au "champ caché". Je capturais les champs cachés dans mon gestionnaire.
2 votes
browser security issue
~ si elle est implémentée dans le navigateur (à juste titre), il est très peu probable que vous puissiez la contourner.1 votes
@e_maxm Quel langage de serveur utilisez-vous (C#, PHP, etc.) ? Peut-être pouvons-nous vous aider avec un exemple de la façon de traiter le fichier téléchargé.
1 votes
@e_maxm - qu'alliez-vous faire avec le nom du fichier/chemin dans le champ caché ? il n'est toujours d'aucune utilité sur le serveur. Cela dit, JavaScript ne vous permettra pas de copier le nom de fichier du champ fichier pour raisons de sécurité donc ça ne marchera pas de toute façon.
1 votes
Je peux comprendre qu'ils ne veuillent pas montrer l'URL complète pour des raisons de sécurité, mais qu'ils inventent des c.. : \fakepath\ semble assez peu professionnel...
0 votes
@theycallmemorty : citation officielle :
This "fakepath" requirement is a sad accident of history
des informations plus détaillées et des références dans cette réponse en lien (par moi), qui couvre également la question de l'OP ci-dessus.29 votes
Bon sang, je garde tous mes fichiers dans
C:\fakepath
donc maintenant tout le monde connaît la structure de mon répertoire.