Lorsqu’un nom de fichier comporte des espaces, comment obtenir le lien href pour télécharger le fichier correctement.

la programmation


Le code fonctionne à moins que le nom de fichier ne contienne des espaces. À l’origine, le lien ne listait que le serveur et le nom de partage et supprimait le nom de fichier car il contenait des espaces. Cela a été corrigé en utilisant le path.replace. Alors maintenant, le lien s’affiche correctement, mais lorsque vous cliquez sur le lien, le fichier ne sera pas téléchargé correctement à moins que le % 20 ne soit reconverti en espaces.

Alors, comment puis-je remplacer les espaces par %20 pour que le lien s’affiche correctement tout en remplaçant les %20 par des espaces lorsque l’utilisateur clique sur le lien ?

Ex. \\Server\Share\my file.docx ferait en sorte que le lien affiche uniquement file://Server/Share, ce qui rend le lien inutilisable.

L’ajout de la partie de remplacement a provoqué l’affichage du lien file://Server/Share/my%2520file.docx mais je reçois un message ne pouvant pas être affiché lorsque vous cliquez sur le lien. Si je remplace manuellement le %2520 par un espace, la boîte de dialogue Ouvrir/Enregistrer apparaît comme prévu.

Encore une fois, le processus fonctionne correctement si le nom de fichier ne contient aucun espace.

Pour information, c’est sur un intranet et j’utilise actuellement IE.

Ce que j’ai essayé :

<pre> string Path = "\\\\server\\share\\" + ddlDept.SelectedValue + "\\" + ddlWI.SelectedValue;
            if (File.Exists(Path))
            {
                Path = Path.Replace(" ", "%20");
                Label1.Text = "Click on this link to retrieve your file, <a href="https://www.codeproject.com/Questions/1224362/ + Path + ">ClickMe</a>";
            }

Solution 1

C’est peut-être trop évident, mais aucune règle n’exige que le chemin d’un lien et le texte qu’il affiche doivent être identiques (ou avoir quelque chose à voir l’un avec l’autre).

Créez donc les liens avec la valeur du lien pendant que vous étiquetez le lien avec la version lisible par l’homme.

Solution 2

Entourez la valeur de l’attribut entre guillemets :

string Path = "\\\\server\\share\\" + ddlDept.SelectedValue + "\\" + ddlWI.SelectedValue;
if (File.Exists(Path))
{
    Label1.Text = "Click on this link to retrieve your file, <a href=\""https://www.codeproject.com/Questions/1224362/ + Path + "\">ClickMe</a>";
}

Attention : L’utilisateur ne pourra accéder au lien que s’il se trouve sur le même réseau que le serveur Web.

コメント

タイトルとURLをコピーしました