web-dev-qa-db-fra.com

syntaxe href: est-il acceptable d'avoir de l'espace dans le nom de fichier

il a toujours été ma pratique que lorsque j'utilise des images, je les nomme comme walls_ico, bu_hover

donc quand je donne des chemins ils vont comme

<img src="images/walls_ico.ico" />
<img src="buttons/bu_hover.png" />

JUSQU'À MAINTENANT quand je suis sur un projet où les utilisateurs téléchargent des fichiers ...

je me demandais est-il correct d'avoir des espaces entre le nom du fichier et des dossiers comme

<img src="buttons/bu hover.png" />
41
Moon

L'attribut src doit contenir un RL valide . Puisque les espaces ne sont pas autorisés dans les URL, vous devez les encoder .

Tu peux écrire:

<img src="buttons/bu%20hover.png" />

Mais pas :

<img src="buttons/bu+hover.png" />

Parce que, comme DavidRR le fait remarquer à juste titre dans son commentaire, le codage des caractères d'espace comme + n'est valide que dans la partie chaîne de requête d'une URL, pas dans le chemin lui-même.

57
Frédéric Hamidi

Citant HTML5 pour soutenir Frédéric que les espaces ne sont pas autorisés:

http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :

L'attribut href sur les éléments a et area doit avoir une valeur qui est une URL valide potentiellement entourée d'espaces.

La définition de "URL valide" pointe vers: http://url.spec.whatwg.org qui définit les points de code URL https://url.spec.whatwg.org/# url-code-points :

Les points de code URL sont ASCII alphanumérique, "!", "$", "&", "'", "(", ")", "*", "+", " , "," - ",". ","/",": ","; "," = ","? "," @ "," _ "," ~ "et les points de code dans les plages U + 00A0 à U + D7FF, U + E000 à U + FDCF, U + FDF0 à U + FFFD, U + 10000 à U + 1FFFD, U + 20000 à U + 2FFFD, U + 30000 à U + 3FFFD, U + 40000 à U + 4FFFD, U + 50000 à U + 5FFFD, U + 60000 à U + 6FFFD, U + 70000 à U + 7FFFD, U + 80000 à U + 8FFFD, U + 90000 à U + 9FFFD, U + A0000 à U + AFFFD, U + B0000 à U + BFFFD, U + C0000 à U + CFFFD, U + D0000 à U + DFFFD, U + E1000 à U + EFFFD, U + F0000 à U + FFFFD, U + 100000 à U + 10FFFD .

La spécification utilise ensuite le terme points de code URL sur diverses parties de l'algorithme d'analyse comme:

Si c n'est pas le point de code EOF, pas un point de code URL et pas "%", erreur d'analyse.

pour le schéma, l'autorité, le chemin relatif, l'état de la requête et les états des fragments: donc l'URL entière.

Si vous utilisez PHP

puis découvrez ce code

$result = mysqli_query($con,$sql);
    //echo $ip."<br />";REGEXP
    //echo $name."<br />";
    echo "<table border=2px style='border-radius=20px;' align=center><tr>
    <th>Document ID</th>
    <th>Document Name Type</th>
    <th>Download Documents</th>
    </tr>";//<th>Project Document Type</th>
    while($row = mysqli_fetch_array($result)) {
        $path1=$row['FOLDERNAME'] .'/'. $row['FILENAME'] .'.'. $row['DOCTYPE'];
        $path=str_replace(" ", '%20', $path1);
        echo "<tr>";
        echo "<td>" . $row['DocID'] . "</td>";
       // echo "<td>" . $row['PROJDOCTYPE'] . "</td>";Thank you. Your Apple ID is now ready for use.
        echo "<td>" . $row['DOCNAME'] . "</td>";
        echo '<td><a href=Tender/'.$path.'>'.$row['DOCNAME'].'</a></td>';
        echo "</tr>";
    }
    echo "</table>";

    mysqli_close($con);
3
ashish bhatt