其名称中带有哈希(#)的文件无法在Web浏览器中打开

时间:2014-03-12 11:32:46

标签: php file browser

  

我有一个简单的php web应用程序,用户上传文件。上传的文件可以被其他用户访问。一直工作正常,最近用户上传了一个名为file_name#234324的文件。当我通过我的Web应用程序打开此文件时,它给出了一个错误,即文件名不存在。这是由于文件名中存在(#)导致浏览器无法正确找到它。   我该怎么办?我不想更改文件名

2 个答案:

答案 0 :(得分:1)

  

我该怎么办?我不想更改文件名

你真的应该这么做。 URL的哈希部分不会发送到服务器,而是保留用于客户端(浏览器)的解释。只有协议,服务器,路径名和查询字符串被发送到服务器。

作为任何优秀文件上传系统的一部分,您应该强制执行有效的文件名或根据需要修改它们。

答案 1 :(得分:0)

#在网址中具有特殊含义。您需要使用percent-encoded等效字符来表示此类字符。

在将文件名添加到网址之前,将文件名传递给urlencode

(当用户上传名为"><script>etc</script>的文件时,这也可以保护您免受XSS攻击。