Синтаксис href: нормально ли иметь место в имени файла
всегда была моя практика, когда когда-либо я использую изображения, я называю их как
walls_ico
, bu_hover
поэтому, когда я даю пути, они идут как
<img src="images/walls_ico.ico" />
<img src="buttons/bu_hover.png" />
UNTIL теперь, когда я нахожусь в проекте, где пользователи загружают файлы...
Я задавался вопросом, нормально ли иметь пробелы между именем файла и папок, например
<img src="buttons/bu hover.png" />
Ответы
Ответ 1
Атрибут src
должен содержать действительный URL. Поскольку символы пробела не разрешены в URL-адресах, вы должны кодировать их.
Вы можете написать:
<img src="buttons/bu%20hover.png" />
Но не:
<img src="buttons/bu+hover.png" />
Поскольку, как верно указывает DavidRR в своем комментарии, символы пробела в кодировке +
действительны только в части строки запроса URL-адреса, а не в самом пути.
Ответ 2
Цитата HTML5, чтобы назад Фредерик, что пробелы не допускаются:
http://www.w3.org/TR/html5/links.html#attr-hyperlink-href:
Атрибут href для элементов a и area должен иметь значение, которое является допустимым URL, потенциально окруженным пробелами.
Определение "действительный URL" указывает на: http://url.spec.whatwg.org, который определяет URL-коды кодов https://url.spec.whatwg.org/#url-code-points:
Точками URL-адреса являются ASCII-буквенно-цифровые, "!", "$", "&", "'", "(", ")", "*", "+", "," , "," . "," / "," : "," ; "," = "," ? "," @ "," _ "," ~ "и кодовые точки в диапазонах 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.
Затем спецификация использует термины URL-адреса URL-адресов для различных частей алгоритма синтаксического анализа как:
Если c не является кодовой точкой EOF, а не точкой URL-адреса, а не "%", ошибка синтаксического анализа.
для схемы, полномочий, относительного пути, состояния запроса и состояний фрагмента: так что весь URL.
Ответ 3
Если вы используете PHP
затем узнайте этот код
$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);
Ответ 4
<body>
<img src="file:///C|/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/Water lilies.jpg"
</body>
пробелы будут разрешены только при работе на локальных хостах