chemin acces

Répondre
Tassadar
le 02/12/2009 à 21:08
Tassadar
Bonsoir,
J'aimerais uploader ce script sur un serveur "free" (http://monsite.free.fr). Comment modifier les adresses du type c:\\ ? J'ai essayé de remplacer C:\\Users\Admin\Desktop\UwAmp\www\webcam\ par http://monsite.free.fr/webcam mais ca ne fonctionne pas.
Merci de votre aide

<?php


$fullpath[0][0] = 'C:\\Users\Admin\Desktop\UwAmp\www\webcam\image\big\saisies\LegetteMtBlanc.jpg';
$fullpath[0][1] = 'C:\\Users\Admin\Desktop\UwAmp\www\webcam\image\big\saisies\BisanneRosiere.jpg';


$img[0][0] = 'http://www.trinum.com/ibox/saisies/images/webcamISDN1.jpg';
$img[0][1] = 'http://www.trinum.com/ibox/saisies/images/saisies_rosieres_mega.jpg';


function save_image($img,$fullpath){

$ch = curl_init ($img);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec($ch);
curl_close ($ch);

if(file_exists($fullpath)){
unlink($fullpath);
}

$fp = fopen($fullpath,'x');
fwrite($fp, $rawdata);
fclose($fp);

}

function replace_img_off($img,$alt_img){
if (getimagesize($img)==FALSE){
unlink($img);
copy($alt_img,$img);
}
}

#pas mettre le nom de l'image dans $dest => celui ci se met auto
function resize_img($source,$dest,$x,$y){
$size = getimagesize($source);
$src=imagecreatefromjpeg($source);
$im=imagecreatetruecolor($x,$y);
imagecopyresampled($im, $src, 0, 0, 0, 0, $x,$y, $size[0], $size[1]);
$miniature = $dest.basename($source);
imagejpeg ($im, $miniature);
}


foreach ($img as $key => $valeur) {
foreach ($img[$key] as $key1 => $adress_webcam) {
$path_img = $fullpath[$key][$key1];

//Enregistrement image recuper sur serveur
save_image($adress_webcam,$path_img);

//Si l'image na pas de taille defini(cela veut dire quil nya pas dimage, on affiche donc une image de remplacement
replace_img_off($path_img,"C:\Users\Admin\Desktop\UwAmp\www\webcam\image\offline.jpg");

//creation miniature
resize_img($path_img,'C:\Users\Admin\Desktop\UwAmp\www\webcam\image\small\\'.basename(dirname($path_img)).'\\',320,240);

//Uniformisation des tailles images
$size = getimagesize($path_img );
if ($size[0] != 704 AND $size[1] != 576 ){
resize_img($path_img,"C:\\Users\Admin\Desktop\UwAmp\www\webcam\image\big\\".basename(dirname($path_img)).'\\',704,576);
}

}
}


?>
LA GLOBULE
le 02/12/2009 à 23:30
LA GLOBULE
L'adresse du fichier sur le serveur ne se devine pas.
Il te faut la determiner.

Pour cela, tu peux faire un fichier php avec juste un echo de $_SERVER['SCRIPT_FILENAME'] que tu mettras dans un repertoire 'toto' de ton hebergement par exemple.

Et ce qui s'affiche, ben c'est le chemin (sur le serveur) de ton dossier toto.
A toi ensuite de l'adapter pour aller dans ton dossier d'image.
Tassadar
le 03/12/2009 à 17:52
Tassadar
Merci, je pensais que l'adresse du serveur commençais par http://... En faite pas du tout !
J'ai donc modifié mon script :

<?php

$path = dirname($_SERVER['SCRIPT_FILENAME']);

$fullpath[0][0] = $path.'/image/big/saisies/LegetteMtBlanc.jpg';
$fullpath[0][1] = $path.'/image/big/saisies/BisanneRosiere.jpg';
$fullpath[0][2] = $path.'/image/big/saisies/BoetetMtBisanne.jpg';
$fullpath[0][3] = $path.'/image/big/saisies/HauteluceChozal.jpg';
$fullpath[0][4] = $path.'/image/big/saisies/HauteluceMtBlanc.jpg';
$fullpath[1][0] = $path.'/image/big/NDBellecombe/CretteVores.jpg';
$fullpath[2][0] = $path.'/image/big/praz/FrontNeige.jpg';
$fullpath[3][0] = $path.'/image/big/crest/WebcamBas1pos2.jpg';

$img[0][0] = 'http://www.trinum.com/ibox/saisies/images/webcamISDN1.jpg';
$img[0][1] = 'http://www.trinum.com/ibox/saisies/images/saisies_rosieres_mega.jpg';
$img[0][2] = 'http://www.trinum.com/ibox/saisies/images/RegiedesSaisies_MEGA.jpg';
$img[0][3] = 'http://www.offline.com/a.jpg';
$img[0][4] = 'http://www.trinum.com/ibox/saisies/images/Hauteluce_mega.jpg';
$img[1][0] = 'http://www.trinum.com/ibox/NDBellecombe/images/NDBellecombe4.jpg';
$img[2][0] = 'http://www.trinum.com/ibox/val-d-arly/Images/praz-front/praz-front_00001.jpg';
$img[3][0] = 'http://www.multi-cam.com/webcam/webcam-crest-voland/photos5/millieu.jpg';


function save_image($img,$fullpath){

$ch = curl_init ($img);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec($ch);
curl_close ($ch);

if(file_exists($fullpath)){
unlink($fullpath);
}

$fp = fopen($fullpath,'x');
fwrite($fp, $rawdata);
fclose($fp);

}

function replace_img_off($img,$alt_img){
if (getimagesize($img)==FALSE){
unlink($img);
copy($alt_img,$img);
}
}

#pas mettre le nom de l'image dans $dest => celui ci se met auto
function resize_img($source,$dest,$x,$y){
$size = getimagesize($source);
$src=imagecreatefromjpeg($source);
$im=imagecreatetruecolor($x,$y);
imagecopyresampled($im, $src, 0, 0, 0, 0, $x,$y, $size[0], $size[1]);
$miniature = $dest.basename($source);
imagejpeg ($im, $miniature);
}


foreach ($img as $key => $valeur) {
foreach ($img[$key] as $key1 => $adress_webcam) {
$path_img = $fullpath[$key][$key1];

//Enregistrement image recuper sur serveur
save_image($adress_webcam,$path_img);

//Si l'image na pas de taille defini(cela veut dire quil nya pas dimage, on affiche donc une image de remplacement
replace_img_off($path_img,$path.'/image/offline.jpg');

//creation miniature
resize_img($path_img,$path.'/image/small//'.basename(dirname($path_img)).'//',320,240);

//Uniformisation des tailles images
$size = getimagesize($path_img );
if ($size[0] != 704 AND $size[1] != 576 ){
resize_img($path_img,$path."/image/big//".basename(dirname($path_img)).'//',704,576);
}

}
}


?>


J'ai maintenant un autre problème :

Warning: getimagesize() [function.getimagesize]: Read error! in /mnt/137/sdb/4/etc

Ce messsage s'affiche 6 fois.

De plus quand je parcours les dossiers images censés contenir les captures des webcams, il n'y a que les images de remplacement qui normalement s'affiche si la webcam est hors service.
Est ce qu'il s'agit d'une imitation du serveur free ? Mon script fonctionne tres bien sur mon ordinateur !
LA GLOBULE
le 03/12/2009 à 18:42
LA GLOBULE
As tu testé que tes chemins étaient bons et que tes fichiers existaient ?

Utilise la fonction is_file pour faire des tests.

Sinon, il ne faut pas utiliser deux slashs à la suite dans tes chemins.
Tassadar
le 03/12/2009 à 19:41
Tassadar
Effectivement, is_file renvoi false pour toutes les images venant des webcams.


is_file : Valeurs de retour
Retourne TRUE si le nom de fichier existe et que c'est un fichier régulier, FALSE sinon.

Qu'est ce que je dois en conclure ? Ces images existent bien car je peux les afficher sur mon navigateur. Elles ne sont donc pas régulières ?
Pourtant sur mon ordinateur windows le script fonctionne bien. Un fichier peut etre régulier sur windows et pas régulier sur un autre système ?
Est ce qu'il y a une solution ?

Merci beaucoup !!!
LA GLOBULE
le 04/12/2009 à 00:32
LA GLOBULE
Si ces images existent bien et qu'elles s'affichent dans ton browser, cela veut dire que le chemin que tu as determiné avec $_SERVER['SCRIPT_FILENAME'] est faux.

En lisant ton code, je peux te dire que si le dossier 'image' n'est pas un dossier fils du dossier où est contenu le fichier php (du code que tu nous montres), c'est normal que cela ne fonctionne pas.

Pourquoi ?

Car, tu définis $path comme étant le chemin absolu du script courant.
Puis pour tes images, tu définis le chemin suivant : $path.'/image/'; (image doit etre un dossier fils du dossier dans lequel se trouve le script).

Bref, le plus simple reste de faire un print_r de $_SERVER et de repérer le chemin avec tes yeux, cela sera plus simple.
Tassadar
le 04/12/2009 à 08:40
Tassadar
J'ai compris mais je ne pense pas que cela soit mon problème. J'ai pris une capture d'écran de l'arborescense sur le serveur
Mon script (sauvegardewebcam.php) se trouve dans le dossier webcam.Contenu du dossier webcam
Mon script est dans le fichier webcam et le fichier image est bien dans le dossier webcam. Donc image est bien un dossier fils du dossier webcam.
Je pensais pas que c'était si compliqué le transfert de fichier php sur un serveur !smiley
Merci beaucoup pour l'aide !
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours