Por lo visto en el error veo que el problema es que no llega a subir la foto al directorio temporal y por tanto el error lo da al intentar mover el fichero.
Como dije en el título todo funciona bien en mi server de desarrollo bajo Windows pero me falla en el servidor de explotación (hosting).
Este es el error
Warning: move_uploaded_file(imagesTemp/47.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/s10d225e/public_html/catalogo.php on line 390
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpMl33Bc' to 'imagesTemp/47.jpg' in /home/s10d225e/public_html/catalogo.php on line 390
Gracias de antemano.
Un saludo.
Función para redimensionar fotos
Código PHP:
function redimensionar($type, $img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad)
{
$defecto = 'img/defecto.jpg';
if(file_exists($img_original))
{
// crear imagen desde original
$type=strtolower($type);
switch($type)
{
case 'jpeg': $img = ImageCreateFromJPEG($img_original); break;
case 'jpg': $img = ImageCreateFromJPEG($img_original); break;
case 'png': $img = ImageCreateFromPNG($img_original); breaK;
case 'gif': $img = ImageCreateFromGIF($img_original); breaK;
case 'wbmp': $img = ImageCreateFromWBMP($img_original); break;
default: $img = ImageCreateFromJPEG($defecto); break;
}
}
else
{
$img = ImageCreateFromJPEG($defecto);
}
if(!empty($img))
{
$new_w_R = ImageSX($img);
$new_h_R = ImageSY($img);
//$img_nueva_altura = 50;
// se calcula la relación alto/ancho
$aspect_ratio = $new_h_R/$new_w_R;
// se ajusta al nuevo tamaño
$img_nueva_altura = abs($img_nueva_anchura * $aspect_ratio);
// crear imagen nueva
$thumb = ImageCreateTrueColor($img_nueva_anchura,$img_nueva_altura);
// redimensionar imagen original copiandola en la imagen. La imagen se reajustará al nuevo tamaño
ImageCopyResampled($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img));
// guardar la imagen redimensionada donde indica $img_nueva
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
global $fotoFinal;
$fotoFinal=$img_nueva;
}
}
Código que me da el error
catalogo.php
Código PHP:
//upload
if( $HTTP_POST_FILES['Foto']['name'])//comprueba si se ha puesto foto
{
//tomo el valor de un elemento de tipo texto del formulario
//$cadenatexto = $_POST["cadenatexto"];
//echo "<p>Empezamos con el upload</p>";
//datos del arhivo
$nombre_archivo = $HTTP_POST_FILES['Foto']['name'];
//echo "nombre $nombre_archivo";
$tipo_archivo =$HTTP_POST_FILES['Foto']['type'];
//echo "--typo $tipo_archivo";
$tamano_archivo = $HTTP_POST_FILES['Foto']['size'];
//echo "--tamaño $tamano_archivo";
//compruebo si las características del archivo son las que deseo
if (!( strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 300000))
{
echo "<p>La extensión o el tamaño de los archivos no es correcta. <br>
Solo se permiten archivos .jpg<br>
Se permiten archivos de 1Mb máximo.</p>";
}
else
{
if (move_uploaded_file($HTTP_POST_FILES['Foto']['tmp_name'], "imagesTemp/$_POST[Id].jpg")){
echo "<p>La foto ha sido cargada correctamente.</p>";
//redimensionamos la foto
if(file_exists("imagesTemp/$_POST[Id].jpg"))
{
mensaje("la foto imagesTemp/$_POST[Id].jpg si que existe en el temporal");
}
redimensionar("jpg","imagesTemp/$_POST[Id].jpg","imagenescatalogo/familia-led-p$_POST[Id].jpg",150,150,100);
if(file_exists("imagesTemp/$_POST[Id].jpg"))
{
unlink("imagesTemp/$_POST[Id].jpg");
}
//FINredimensionamos la foto
}else
{
echo "<p>Ocurrió algún error al subir la foto. No pudo guardarse.</p>";
}
}
}
//FIN upload