Buenas, tengo este código para subir un archivo al servidor, a la BD y además crear una miniatura.
Código PHP:
Ver original<?php
$UpPath = "P:\workspace\gypco\root\upfiles"; //ruta on pugen les imatges
$UpPathThumb = "P:\workspace\gypco\root\upfiles\thumbnails"; //ruta de les miniatures
$DirUploads = "upfiles/"; //directori on pugen les imatges
$UpFile = $UpPath . basename($_FILES['File1']['tmp_name']); //ruta completa de la imatge (carpeta/imatge.ext) $UpFileThumb = $UpPathThumb . basename($_FILES['File1']['tmp_name']); //ruta completa de la miniatura
$fileName = $_FILES["File1"]["tmp_name"]; //Asssignem un nom aleatori temporal a l'arxiu
$tamany = array(); //Definimo un array per guardar el tamany de l'arxiu $tamany = $_FILES["File1"]["size"]; //obtenim el tamany de l'arxiu
$size = GetImageSize("$fileName"); // GetImageSize retorna un array amb varies informacions de la imatge passada com argument. $amplada = $size[0]; //amplada de la imatge
$altura = $size[1]; //altura de la imatge
$tipus = $_FILES["File1"]["type"]; //obtenim el tipus d'arxiu
$fileName = $_FILES["File1"]["name"]; //obtenim el nom real de l'arxiu
$ID_reg = $fileName.$id; //assignem el Id del paràgraf al qual perntany la imatge.
extract($_REQUEST); //traeim les dades de REQUEST $extensio = getExtension($fileName); //crida a la funció per obtenir la extensio
$error = "";
?>
if ($error != ""){
?>
<script language="JavaScript" type="text/JavaScript">
<!--
alert('<?php echo $error?>');
history.back();
-->
</script>
<?php
}else{
$fp = fopen($fileName, "rb"); //obreim l'arxiu en mode lectura i verifiquem el seu contingut $contenido = fread($fp, $tamany); //llegim el contingut de l'arxiu $contenido = addslashes($contenido); //afegim un \ a cada cometa simple ' perque sino marca error al INSERT fclose($fp); //tanquem l'arxiu
//PUGEM LA IMATGE AL SERVIDOR
(copy($_FILES["File1"]["tmp_name"],$UpFile)) or
die ("Error al subir la imagen ".$fileName); //guardem la imatge a la carpeta
//CREEM EL THUMBNAIL
function crearThumbnail($UpPath, $UpPathThumb, $amplada_thumb) {
$dir = opendir($UpPath); //obrim el directori on estan les imatges while (false !== ($fname = readdir($dir))) { //busquem les imatges JPG o GIF if ((strtolower($info['extension']) == 'jpg') || (strtolower($info['extension']) == 'gif')){ //només validem JPG i GIF echo "Creating thumbnail for {$fileName} <br/>";
$amplada_thumb = 180; //amplada de la miniatura
$ratio = $amplada/$amplada_thumb; //ratio de conversió
$altura_thumb = $altura_thumb/$ratio; // altura de la miniatura
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $amplada_thumb, $altura_thumb, $amplada, $altura); //copiem i redimensionem la imatge en la miniatura imagejpeg($tmp_img, $UpPath."th_".$fileName); //guardem la miniatura en un arxiu, afegint al inci del nom la cadena "th_". }
}
closedir( $dir ); //tanquem el directori }
//Cridem a la funcio creaThumbnail i passem com a paràmetre la ruta del directori que conté imatges,
//la ruta del directori on es guardaran les miniatures, i l'amplada de la miniatura.
crearThumbnail($UpPath, $UpPathThumb, $amplada_thumb);
$query2 = "INSERT INTO upfiles (taula, nomfile, ct_descripcio, cs_descripcio, clau_id, amplada, altura) VALUES('partseccio', $fileName, '".$_POST["peuct"]."', '".$_POST["peucs"]."', $ID_reg, $amplada, $altura)";
echo $query2;
echo "Imatge pujada correctament";
(He obviado parte del código, que no resulta relevante aqui).
Bien, me salta los siguientes errores:
Warning: fopen(chameleon2.jpg) [function.fopen]: failed to open stream: No such file or directory in /var/www/html/workspace/gypco/root/admin/seccions/upload.php on line 35
Warning: fread(): supplied argument is not a valid stream resource in /var/www/html/workspace/gypco/root/admin/seccions/upload.php on line 36
Warning: fclose(): supplied argument is not a valid stream resource in /var/www/html/workspace/gypco/root/admin/seccions/upload.php on line 38
Warning: copy(P:\workspace\gypco oot\upfilesphp4HwhxT) [function.copy]: failed to open stream: Permission denied in /var/www/html/workspace/gypco/root/admin/seccions/upload.php on line 41
Error al subir la imagen chameleon2.jpg
Realmente no sé si está bien el código.. Me echáis una manita?
gracias!