为什么 Image 标签不接受 # 作为 src?

Why Image tag doesn't accept # as src?

有人可以解释为什么这样的文件名 returns 是错误的吗?

<img alt="" src="uploads/#hje-bubble-wrap-factory.jpeg">

除其他外,#(散列)字符是需要特殊编码才能使 url 被视为安全的字符。 img html 元素需要 src 属性 url 才能安全工作,因此出现错误。

这通常通过 URL 编码来解决,它将不安全的 ASCII 字符替换为“%”后跟两个十六进制数字。

<img alt="" src="uploads/%23hje-bubble-wrap-factory.jpeg">

希望对您有所帮助。

img element expects either an absolute or relative URL to a valid, supported image file. URL syntaxsrc 属性 将 # 之后的任何内容定义为片段标识符。

因此,在您的示例中,只有 uploads/ 被视为文件路径,而 #hje-bubble-wrap-factory.jpeg 段被解析为片段标识符。

片段是 HTML 或 XML 文档中的指定部分,因此浏览器将尝试解析 URL 路径 (uploads/),然后定位该文件中的片段 (#hje-bubble-wrap-factory.jpeg)。但是,由于 uploads/ 处没有文件,HTTP 响应可能来自服务器 HTML(或根本没有),无法显示为图像 ;)

如果您的文件名实际上包含 #,您可以对其进行编码,但是不建议对文件名使用特殊字符。

请注意,片段标识符在 src 属性 中完全有效。您可以将该技巧用于各种 fun things with SVGs.