var imgRoot='forum/attachments/users/';
<img
src="../employees/attachments/users/username_xyz.png"
onerror='this.src=imgRoot+"no_profile_pic.png" '
/>
我必须显示用户个人资料图片(未在 db 中设置),只需简单上传到预定义目录,用户名中的空格替换为下划线,例如用户名是“A B C”,我们期望图像 A_B_C.png .当用户没有图像时会出现问题,我们必须显示默认图像,如上所示,通过添加 onerror 事件来加载默认图像。
有没有更好的方法来处理这个问题?我们事先不知道用户是否上传了个人资料图片。另一个烦恼是,当 firebug 在加载回退默认配置文件图像之前没有找到用户配置文件图像时,它会报告网络错误。
最佳答案
当找不到文件时,我会让服务器响应一个 http 302
重定向到默认的配置文件图像 url。大多数网络服务器无需任何代码即可执行此操作,只需一个配置文件。
编辑:由于您使用的是 Apache,因此您需要执行以下操作:
- 确保安装了 mod_rewrite。
- 如果您要使用
.htaccess
文件,请确保为目标目录设置了AllowOverride On
。 编辑您的
httpd.conf
或.htaccess
文件。RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^.*$ /anonymous.jpg [L,R=302]
Apache 配置有很多怪癖,因此您的配置可能必须略有不同。
关于javascript - 通过 javascript 处理默认配置文件图像的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18844796/