A ver, vamos por partes que esto ya parece una ensalada!
1- Generalmente usas htmlentities() o htmlspecialchars(), no las dos, ni más de una vez, porque te codificará texto ya codificado.
2- Si vas a pasar algún texto por url, entonces debes codificarlo con la función adecuada, en este caso, urlencode()
3- La diferencia entre las funciones de escape de mysql y mysqli es que a esta última debes proporcionar el recurso de conexión como primer parámetro, de lo contrario no funciona; pero sería bueno saber si la estás usando en programación estructurada u orientada a objetos.
4- No puedes manipular el campo tipo file, sería un grave riesgo de seguridad en el navegador y creo que ni IExplorer permite hacer eso.