CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Help] script upload renommer fichiers

Advertissement
Advertissement
Niveau 6
02 décembre 2005 à 22:08:44

:salut:

Je n´y connais rien en php, mais j´ai un site, sur lequel on peut uploader des images, et j´utilise donc un script d´upload.

Mon problème est que certains utilisateurs uploadent des images avec un espace dans le nom, et donc le lien donné (mon site marche comme imageshack) est de la forme

www.monsite.com/le nom de limage

et je voudrais qu´il soit

www.monsite.com/le%20nom%20de%20limage

Voici mon script :

<?php
$DESTINATION_FOLDER = $_POST["up/"]; //
// Taille maximale de fichier, valeur en bytes //
$MAX_SIZE = 20000000; //
// Récupération de l´url de retour //
$RETURN_LINK = $_SERVER[´HTTP_REFERER´]; //
// Définition des extensions de fichier autorisées (avec le ".")//
$AUTH_EXT = array(".jpg", ".png", //
".bmp", ".gif", ".JPG", ".JPEG", ".jpeg"); //
//

    1. ###############################################
    2. ####### //

// Fonction permettant de créer un lien de retour automatique

function createReturnLink(){
global $RETURN_LINK;
echo "<a href=´".$RETURN_LINK."´>Retour</a><br>";
}

// Fonction permettant de vérifier si l´extension du fichier est
// autorisée.

function isExtAuthorized($ext){
global $AUTH_EXT;
if(in_array($ext, $AUTH_EXT)){
return true;
}else{
return false;
}
}

// On vérifie que le champs contenant le chemin du fichier soit
// bien rempli.

if(!empty($_FILES["file"]["name"])){

// Nom du fichier choisi:
$nomFichier = $_FILES["file"]["name"] ;
// Nom temporaire sur le serveur:
$nomTemporaire = $_FILES["file"]["tmp_name"] ;
// Type du fichier choisi:
$typeFichier = $_FILES["file"]["type"] ;
// Poids en octets du fichier choisit:
$poidsFichier = $_FILES["file"]["size"] ;
// Poids en Kilo-octets du fichier choisit:
$poidsFichierK = $poidsFichier/1024;
// Pré formatage en affichage avec 0 chiffre après la virgule , donc pas de virgule.
$poidsFichierK = sprintf("%.0f", $poidsFichierK) ;
// Code de l´erreur si jamais il y en a une:
$codeErreur = $_FILES["file"]["error"] ;
// Extension du fichier
$extension = strrchr($nomFichier, ".");

// Si le poids du fichier est de 0 bytes, le fichier est
// invalide (ou le chemin incorrect) => message d´erreur
// sinon, le script continue.
if($poidsFichier <> 0){
// Si la taille du fichier est supérieure à la taille
// maximum spécifiée => message d´erreur
if($poidsFichier < $MAX_SIZE){
// On teste ensuite si le fichier a une extension autorisée
if(isExtAuthorized($extension)){
// Ensuite, on copie le fichier uploadé ou bon nous semble.
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
if($uploadOk){
}else{
echo("L´upload a échoué !< br><br>");
echo(createReturnLink());
}
}else{
echo ("Les fichiers avec l´extension $extension ne peuvent pas être uploadés !< br>");
echo (createReturnLink()."<br>");
}
}else{
$tailleKo = $MAX_SIZE / 1000;
echo("Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : $tailleKo Ko.<br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Le fichier choisi est invalide !< br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Vous n´avez pas choisi de fichier !< br>");
echo (createReturnLink()."<br>");
}
?>

Quelqu´un pourrait me dire ce que je dois modifier, pour qu´il renomme les " " en "%20"

:merci: à tous !

Neo71
Neo71
Niveau 9
02 décembre 2005 à 22:14:57

Tu peux remplacer ça :
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);

par ça :
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.rawurlencode($nomFichier));

Mais je ne suis pas sur que ce que tu veuilles faire soi d´un grand intéret.

Si qqun entre cette url :
www.monsite.com/le nom de limage
elle sera interpretée de cette manière :
www.monsite.com/le%20nom%20de%20limage
Mais ton serveur saura bien de quel fichier il s´agit puisqu´il va décoder l´url.

Advertissement
Advertissement
Niveau 6
02 décembre 2005 à 22:27:12

Le probleme c´est que mon site est fait pour heberger des images, et quand un internaute héberge une image dont le nom contient un espace, en retour un a un lien de ce genre

www.monsite.com/son image.jpg

et donc le lien est mort, puisqu´un vrai lien devrait etre de la forme

www.monsite.com/son%20image.jpg

Je vais voir ta réponse, :merci: pour ton aide :ok:

Advertisment
Advertisment
Niveau 6
02 décembre 2005 à 22:28:44

En fait, j´ai pas précisé, :desole: mais le lien à copier est de la forme

www.monsite.com/son image

et donc quand on colle le lien directement, (comme sur le forum de jv.com) le lien est mort

Advertisment
Advertisment
Niveau 6
02 décembre 2005 à 22:30:44

L´internaute reçoit ce lien :

http://www.imageshost.online.fr/up/savant fou
:mort:

et je voudrais qu´il reçoive :

http://www.imageshost.online.fr/up/savant%20fou
:content:

Bon, je vais essayer ce que tu m´as dis :-p)

Advertisment
Advertisment
Niveau 6
02 décembre 2005 à 22:35:35

En fait je crois pas que ça vienne du script (je sais pas trop :snif: )
ça viendrait plutôt du lien de l´image que je donne : il est de la forme :

http://www.imageshost.online.fr/up/&lt; echo"$nomFichier";?>

et il me faut un nom de fichier sans espaces :doute:

C´est d´un compliqué :-(

Advertisment
Advertisment
Niveau 6
02 décembre 2005 à 22:58:09

:help: :svp:

:up:

Advertissement
Advertissement
Niveau 6
03 décembre 2005 à 12:58:46

:up: je sais toujours pas comment faire.

Neo71
Neo71
Niveau 9
03 décembre 2005 à 15:10:32

http://www.imageshost.online.fr/up/&lt; echo rawurlencode($nomFichier);?>

Advertissement
Advertissement
Niveau 6
03 décembre 2005 à 17:36:26

Merci encore pour ton aide, mais ça ne marche pas :-( à la sortie, le lien donné contient toujours un espace au lieu du %20

Dans cette partie là

// Nom du fichier choisi:
$nomFichier = $_FILES["file"]["name"] ;

Il n´y a pas un moyen de faire un truc du genre (je ne sais pas le dire en php) mais quelque chose comme ça :

// Nom du fichier choisi:
$nomFichier = $_FILES["file"]["name"] ;
if $nomFichier contient un espace
then renommer l´espace en %20

:question:

Neo71
Neo71
Niveau 9
03 décembre 2005 à 17:52:41

Ce que je t´ai donné marche très bien je viens de faire le test :

<?php
$monFichier = "salut ça va ?" ;

echo $monFichier.´<br>´ ;
echo rawurlencode($monFichier) ;
?>

Affiche :

salut ça va ?
salut%20%E7a%20va%20%3F

Advertissement
Advertissement
Niveau 6
03 décembre 2005 à 18:09:55

Surement, mais quand je place le code j´obtient ça sur le site

Parse error: parse error, unexpected T_ECHO in
/var/www/free.fr/c/7/www.imageshost/up/uploader.ph
p on line 130

et la ligne 130 c´est celle où j´ai ajouté

echo $monFichier.´<br>´ ;
echo rawurlencode($monFichier) ;

ça me fait :

// Nom du fichier choisi:
$nomFichier = $_FILES["file"]["name"]
echo $monFichier.´<br>´ ;
echo rawurlencode($monFichier) ;

Je pense que c´est pas ici qu´il fallait le mettre... :doute:

Neo71
Neo71
Niveau 9
03 décembre 2005 à 18:19:23

lol nan ça c´est une erreur "made in jeuxvideo.com" ;)

En fait le forum ici remplace les simples quotes par des trucs qui y ressemblent mais qui n´en sont pas ;) Et ça ne plait pas à php.

Remplace par ça :
echo "$monFichier<br>" ;
echo rawurlencode($monFichier) ;

Advertissement
Advertissement
Niveau 6
03 décembre 2005 à 18:29:10

parfait, :merci; beaucoup pour ton aide ! les liens et fichiers sont renommés ! :merci: encore Neo !
:bye:

Advertissement
Advertissement
Niveau 6
03 décembre 2005 à 19:50:29

Euh, Neo, est ce qu´il y a moyen de faire la même chose, mais pour renommer le fichier en y enlevant les accents ?

Neo71
Neo71
Niveau 9
03 décembre 2005 à 20:54:56

Bah normalement le rawurlencode vire aussi les accents.

Advertissement
Advertissement
Niveau 6
03 décembre 2005 à 21:59:19

:merci: tout ce qui devait être fait est fait ! :ok:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment