Thread eMail-Formular mit Bild(ern) als Anhang (18 answers)
Opened by Platten-Spieler.de at 2018-07-31 17:28

GwenDragon
 2018-08-01 14:23
#188705 #188705
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
@Platten-Spieler.de
So praktisch ist das nicht wie du das alles per Hand machst, ist es nicht.
Es gibt das Modul CPAN:CGI, mit dem du einfacher CGI bedienen und auch Formulare mit Uploads handeln kannst.

Quote
- Zusendung eines oder mehrerer jpg-Bilder ueber ein eMail-Formular
Geht über ein Formular mit drei Feldern vom Typ file.

Drei Formularfelde input mit type=file.
Erst eins immer anzeigen lassen und über einen Plusbutton nach Bedarf zwei hinzufügen lassen. Oder gleich alle drei Felder anzeigen.
Dort kann Kunde dann über "Datei öffnen" die Datei hochladen
Oder brauchst du Drag&Drop?

Quote
- Begrenzung der Zusendung auf dieses Format
Über die Prüfung des Dateinamens:
Im Browser Endung des Dateinamens des Feldes uploadBild per JS prüfen.
Serverseitig Prüfung der hochgeladenen Datei auf korrekte Dateiendung über param('uploadBild')
https://metacpan.org/pod/distribution/CGI/lib/CGI....
Serverseitig Prüfung mit CPAN:File::MimeInfo::Magic auf den korrekten Mimetype image/jpeg.

Quote
- Begrenzung der Zusendung auf 3 Bilder
Durch die drei Uploadfelder im Formular ist das gewährleistet.

Quote
- Begrenzung der Bildgroesse auf je 2 MB (muss man ja heute leider einkalkulieren.
Vor dem Upload? teilweise nur mit neurem Browser, siehe http://jsbin.com/ulamor/213/edit?html,output
Die Dateigröße nach Upload ist bei den temporären Dateien mit Perldoc:perlfunc stat bestimmbar.
https://metacpan.org/pod/distribution/CGI/lib/CGI....

Quote
...und wenn es ginge, waere eine automatische Bildverkleinerung auf 300 KB noch der
absolute Hit!)
Vor dem Upload?
Schwierig. Nur über HTML5 Canvas. Dann musst du das Bilder aber trotzdem noch irgendwie noch kodderen und senden.
Nach dem Upload? Ist einfacher.
Mit CPAN:Imager resize.



Reicht das als Hintergrund?
Probier doch mal und dann frage nochmals.

Beispielhaft nur der Upload:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

use CGI ();
use File::MimeInfo::Magic;

sub GetMimeType {
  my $fname = shift;
  my $mimetype = File::MimeInfo::Magic::mimetype($fname);
  return $mimetype;
}

my @files;

my $FORM = <<HTML; 
<form method="POST" enctype="multipart/form-data">
        <!-- hier weitere Felder -->
        Bild hochladen:<br>
        Bild 1: <input type="file" name="uploadBild"> <br>      
        Bild 2: <input type="file" name="uploadBild"> <br>
        Bild 2: <input type="file" name="uploadBild"> <br>
        <input type="submit" value="Senden" onClick="return validate_form()">
</form>
HTML

my $cgi = CGI->new;

print $cgi->header('text/html');

if ( $cgi->request_method() eq 'GET') { 
        print $FORM;
}

elsif ( $cgi->request_method() eq 'POST') { 
        @files = $cgi->param('uploadBild');

        for my $file (@files) {
                print "Size: ", (stat($file))[7], 
                      " Mime-type: ", GetMimeType($file), '<br>';
        }
}


Editiert von GwenDragon: Code für Upload
Last edited: 2018-08-04 16:20:33 +0200 (CEST)

View full thread eMail-Formular mit Bild(ern) als Anhang