Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Affecter le contenu d'un fichier a une variable

4 réponses
Avatar
Banoit Barbier
Bonjour à tous,

Avec un formulaire de ce type:


<form method="POST" action="submitform.php" enctype ="multipart/form-data">
<input size="60" type="file" name="userfile"><br>
<input name="send" value="Send" type="submit">
</form>



Je télé-charge un fichier du système de fichier de ma machine de bureau.
Le navigateur me propose une fenêtre de sélection de fichier(locale).

Ensuite dans submitform.php, je ne veux pas faire le classique
copy($userfile, "$path$userfile_name");

Je veux affecter le contenu du ficher à la variable $query sans passer par le
système de fichier du serveur pour faire directement:

$Result = pg_exec($connect, $query);

Comment faire svp?

Merci d'avance


--
Benoît

4 réponses

Avatar
Frederic BISSON
$Result = pg_exec($connect, $query);
As-tu essayé quelque chose du genre :

$query=implode("n",readfile($_FILES['userfile']['tmp_name']));

@+

Frédéric

Avatar
Banoit Barbier
On 19 Jul 2004 21:27:31 GMT
Frederic BISSON wrote:

$Result = pg_exec($connect, $query);
As-tu essayé quelque chose du genre :

$query=implode("n",readfile($_FILES['userfile']['tmp_name']));



Bonjour,

Je viens de tester, readfile() renvoie un entier reçu en paramètre par implode
qui s'attend à un tableau.

int readfile ( string filename [, bool use_include_path [, resource context]])

Dans ce cas, $query reste vide.

Ceci fonctionne:

$query = fread (fopen($userfile, "r"), filesize ($userfile));

Ou mieux avec register_globals:

$query = fread (fopen($_FILES['userfile']['tmp_name'], "r"),
$_FILES['userfile']['size']);


Est-il nécessaire de faire le fclose()?

$handle=fopen($userfile, "r");
fclose ($handle);

C'est un espace en mémoire dès que j'ai son contenu dans ma var je n'en ai
plus besoin, que se passe t-il si je ne fais pas le fclose()?


Merci d'avance,
--
Benoît


Avatar
Frederic BISSON
Je viens de tester, readfile() renvoie un entier reçu en paramètre par implode
qui s'attend à un tableau.
Autant pour moi, je voulais dire file()

$contenu=implode("n",file($_FILES['userfile']['tmp_name']))

Est-il nécessaire de faire le fclose()?
Avec ce que je t'ai donné, non.


$handle=fopen($userfile, "r");
fclose ($handle);
C'est plus propre et plus optimal de libérer les ressources quand tu ne

t'en sers plus. En cas de charge intensive, ça peut faire une grosse
différence.

De toute façon, à la fin de l'exécution de ton script, PHP libère
tous les handles, ressources de requêtes etc... qui ont pu être alloués
par le script.

Pour les variables, dès qu'elles ne sont plus référencées nulle part,
elles partent dans le "garbage collector".

@+

Frédéric

Avatar
Guillaume Bouchard
Banoit Barbier wrote:
Est-il nécessaire de faire le fclose()?


Non, il se fait automatiquement à la fin du script.

D'un autré coté, qui laiserait sa vaiselle en desordre sous pretexte que
les prochains locataires la feront forcement ?

C'est comme les connection sql ou autres trucs, quand ont n'a plus
besoin, ont ferme.

--
Guillaume.