【发布时间】:2013-08-17 17:42:27
【问题描述】:
我构建了 Web 应用程序来管理客户的备件,它带有手册作为标准的零件 ID。
我检查了它的零件 ID 是唯一的数字。使用 MYSQL v5.5.16 存储记录和使用 PHP v5.3.8 的 Web 界面。
根据客户要求,他们希望在文件夹中列出备件图像。基本上,当用户输入记录并上传图像时,我根据存储在数据库中的部分 ID 重命名图像并将上传的图像复制到文件夹。
是的,当用户显示图像时它工作得很好(part-id:241203、299301 ...等)。当 part-id 带有 1/8S40003 时,如您所知,图像名称不能包含某些字符(/ \ : * ?" |)。
我还将<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 放在页面顶部的<head> 标签和header('Content-type: text/html; charset=utf-8'); 之间。
我简化了,只需将“/”符号编码为 html 十进制代码 -> &#047;。
将图像名称存储到数据库中似乎效果很好,上传图像工作 100%,我也在检查文件夹内手动图片,
但是当用
显示图片时<img src='../Images/Spare parts/1/8S40003.png' />
Web 浏览器自动将其解码到路径目录 ('/'),但我在 'view source' 上检查了一个标签,它是用<img src='../Images/Spare parts/1&#047;8S40003.png' /> 编写的。
即使使用 htmlentities、html_entity_decode、htmlspecialchar,htmlspecialchars_decode 也不起作用,并且更糟糕地将 '&' 符号转换为 &amp;
我找到了另一种方法,通过使用 php 中的 urlencode,通过转换 '/' -> %2F 并附加数字的其余部分。
<img src='../Images/Spare parts/1%2F8S40003.png' />
我在“查看源代码”上检查了一个标签,它与上面的写法相似,但没有给出解决方案。
任何曾经遇到过这个问题或想法的人都将不胜感激!谢谢。
【问题讨论】:
-
向我显示您存储图像的目标文件夹路径
-
尝试使用
rawurlencode($imgName)- php.net/rawurlencode -
@Tigger 它的工作就像魔术一样!谢谢=)