It is possible to use an array of 6 materials instead of a single material. In such case each material corresponds to one of the 6 faces. Then, you can replace the .map of one of these materials. To flip a texture you can use .flipY property.
// loading textures
var texture = new THREE.TextureLoader().load( "main-texture.jpg" );
var texture2 = new THREE.TextureLoader().load( "second-texture.jpg" );
// defining a cube with 6 different materials (reusing the same texture)
var myCubeObject= new THREE.Mesh(
new THREE.BoxGeometry( 2, 2, 2 ),
[
new THREE.MeshPhongMaterial( {map: texture} ),
new THREE.MeshPhongMaterial( {map: texture} ),
new THREE.MeshPhongMaterial( {map: texture} ),
new THREE.MeshPhongMaterial( {map: texture} ),
new THREE.MeshPhongMaterial( {map: texture} ),
new THREE.MeshPhongMaterial( {map: texture} )
]
);
// replacing the texture of face №0
myCubeObject.material[0].map = texture2;
myCubeObject.material[0].map.flipY = false;