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

simple upload

4 réponses
Avatar
Alexandre Jaquet
bonjour,

j ai un petit soucis avec mon upload :

msg error : binmod on closed TMP file ..

sub uploadImage {
my $name = shift || '';
my $file = $query->param('image');

my $tmpfile=$file;

open TMP,"$tmpfile";
binmode TMP;
open OUT,"> C:/Apache2/htdocs/recordz/upload/$name.jpg";
binmode OUT;
while (<TMP>)
{
print OUT $_;

}
close TMP;
close OUT;

#system("chmod 777 C:/Apache2/htdocs/recordz/upload/$name.jpg");
createTumb($name);
}

sub createTumb {

my $filename = shift || '';
open IN, 'C:/Apach23/htdocs/recordz/upload/$filename' or die
"Could not open.";
my $srcImage = GD::Image->newFromJpeg(*IN);
close IN;
my ($thumb,$x,$y) = Image::GD::Thumbnail::create($srcImage,50);
open OUT, ">C:/Apache2/htdocs/recordz/thumb_test.jpg" or die "Could
not save ";
binmode OUT;
print OUT $thumb->jpeg;
close OUT;
}

4 réponses

Avatar
Jacques Caron
Salut,

On Mon, 27 Jun 2005 09:05:48 +0200, wrote:

msg error : binmod on closed TMP file ..


Ce serait bien de préciser où...

sub uploadImage {
my $name = shift || '';
my $file = $query->param('image');

my $tmpfile=$file;

open TMP,"$tmpfile";


Euh... Si c'est un upload j'aurais tendance à penser que le paramètre
contient l'image elle-même, pas le nom d'un fichier, non? Au passage,
rajouter un test sur chaque open avec affichage du message d'erreur et
traitement approprié si le open échoue serait quand même bigrement utile...

open OUT,"> C:/Apache2/htdocs/recordz/upload/$name.jpg";
[...]

createTumb($name);
[...]

sub createTumb {

my $filename = shift || '';
open IN, 'C:/Apach23/htdocs/recordz/upload/$filename' or die
"Could not open.";


Tu noteras aussi que d'un côté tu ajoutes .jpg et pas de l'autre...

Jacques.

Avatar
Alexandre Jaquet
Salut,

On Mon, 27 Jun 2005 09:05:48 +0200, wrote:

msg error : binmod on closed TMP file ..



Ce serait bien de préciser où...

sub uploadImage {
my $name = shift || '';
my $file = $query->param('image');

my $tmpfile=$file;

open TMP,"$tmpfile";



Euh... Si c'est un upload j'aurais tendance à penser que le paramètre
contient l'image elle-même, pas le nom d'un fichier, non? Au passage,
rajouter un test sur chaque open avec affichage du message d'erreur et
traitement approprié si le open échoue serait quand même bigrement utile...

open OUT,"> C:/Apache2/htdocs/recordz/upload/$name.jpg";


[...]

createTumb($name);


[...]

sub createTumb {

my $filename = shift || '';
open IN, 'C:/Apach23/htdocs/recordz/upload/$filename' or die
"Could not open.";



Tu noteras aussi que d'un côté tu ajoutes .jpg et pas de l'autre...

Jacques.


Je viens de voir que j avais oublié enctype="multipart/form-data"


Avatar
Alexandre Jaquet

Salut,

On Mon, 27 Jun 2005 09:05:48 +0200, wrote:

msg error : binmod on closed TMP file ..




Ce serait bien de préciser où...

sub uploadImage {
my $name = shift || '';
my $file = $query->param('image');

my $tmpfile=$file;

open TMP,"$tmpfile";




Euh... Si c'est un upload j'aurais tendance à penser que le paramètre
contient l'image elle-même, pas le nom d'un fichier, non? Au passage,
rajouter un test sur chaque open avec affichage du message d'erreur
et traitement approprié si le open échoue serait quand même bigrement
utile...

open OUT,"> C:/Apache2/htdocs/recordz/upload/$name.jpg";



[...]

createTumb($name);



[...]

sub createTumb {

my $filename = shift || '';
open IN, 'C:/Apach23/htdocs/recordz/upload/$filename' or die
"Could not open.";




Tu noteras aussi que d'un côté tu ajoutes .jpg et pas de l'autre...

Jacques.



Je viens de voir que j avais oublié enctype="multipart/form-data"


Mais j ai un message d erreur qui me dit could'not open
nom_image_provenant_du_formulaire.jpg



Avatar
Alexandre Jaquet


Salut,

On Mon, 27 Jun 2005 09:05:48 +0200, wrote:

msg error : binmod on closed TMP file ..





Ce serait bien de préciser où...

sub uploadImage {
my $name = shift || '';
my $file = $query->param('image');

my $tmpfile=$file;

open TMP,"$tmpfile";





Euh... Si c'est un upload j'aurais tendance à penser que le
paramètre contient l'image elle-même, pas le nom d'un fichier, non?
Au passage, rajouter un test sur chaque open avec affichage du
message d'erreur et traitement approprié si le open échoue serait
quand même bigrement utile...

open OUT,"> C:/Apache2/htdocs/recordz/upload/$name.jpg";




[...]

createTumb($name);




[...]

sub createTumb {

my $filename = shift || '';
open IN, 'C:/Apach23/htdocs/recordz/upload/$filename' or die
"Could not open.";





Tu noteras aussi que d'un côté tu ajoutes .jpg et pas de l'autre...

Jacques.




Je viens de voir que j avais oublié enctype="multipart/form-data"



Mais j ai un message d erreur qui me dit could'not open
nom_image_provenant_du_formulaire.jpg



Finallement j ai corrigé :

sub uploadImage {
my $name = shift || '';
my $file = $query->param('image');

my $tmpfile=$file;
my $buffer;
open (OUTFILE,">>C:/Apache2/htdocs/recordz/upload/$name.jpg");
while (my $bytesread=read($file,$buffer,1024)) {
print OUTFILE $buffer;
}
apres avoir trouvé de la doc sur
http://cpan.uwinnipeg.ca/htdocs/CGI.pm/CGI.html#creating_a_file_upload_field