Domino 9 und frühere Versionen > ND6: Entwicklung

vor jpg-Import Dateigröße des zu importieren jpg abfragen

(1/2) > >>

theBastian:
Hi,

ich habe gerade per LS Import aus NotesUIDocument ein Button gebaut, mit dem die User jpg's importieren sollen.

Nun ist ja auf die User nicht so Verlass und die importieren auch schnell mal ein Bild mit 5 MB aus der Digicam. Habe zwar schon die Dateiformate begrenzt aber das dürfte nicht reichen.  :(

Daher wollte ich vor dem Import die Größe des Bildes abfragen und falls das Bild zu groß, dann den Import mit Fehlermeldung verhindern.

Ist das mit LS machbar und falls ja, mit welcher Klasse?
Danke schon mal im voraus.

cu
Sebastian

koehlerbv:
Gib' der FileLen function von LotusScript eine Chance.

Bernhard

theBastian:
Vielen Dank für die Info. Das lies sich natürlich mit dem einfachen Import nicht abprüfen. Habe daher mal einen Code, den ich hier gefunden habe etwas angepaßt.

Funktioniert sogar.  ;)



--- Code: ---Sub Click(Source As Button)
On Error Goto errHandler
Dim uiws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim vFilepath As Variant
Dim vFileLength As Long
Dim strFilepath As String
Dim strEndung As String

Set db = session.CurrentDatabase
Set uidoc = uiws.CurrentDocument
Set doc = uidoc.Document

Call uidoc.FieldSetText ( "Signatur", "") 'Feld löschen
Call uidoc.GotoField("Signatur") 'zum Feld springen

vFilepath = uiws.OpenFileDialog( True, db.Title, "All supported Images|*.jpg;*.jpeg;*.cgm;*.bmp;*.gif;*.pcx|GIF-Image|*.gif|JPEG-Image|*.jpg;*.jpeg|BMP-Image|*.bmp|CGM-Image|*.cgm", "c:\")

If Isempty(vFilepath) Then Exit Sub      ' Script verlassen falls User keine Datei auswählt

Forall ImageList In vFilepath ' Durch die ausgewählten Dateien loopen

strFilepath = ImageList
vFileLength = Filelen(strFilepath) 'Dateigröße auslesen
If vFileLength > 300000 Then Goto picerrHandler 'Dateigröße checken

      'Hole die Dateiendung in den String, dabei mit LowerCase auf Kleinschreibung umgestellt
strEndung = Lcase$(Right$(strFilepath, 3))

Select Case strEndung
Case "gif":
Call uidoc.Import("GIF Image",strFilepath)
Case "jpg":
Call uidoc.Import("JPEG Image",strFilepath)
Case "cgm":
Call uidoc.Import("CGM Image",strFilepath)
Case "peg":
Call uidoc.Import("JPEG Image",strFilepath)
Case "pcx":
Call uidoc.Import("PCX Image",strFilepath)
Case "bmp":
Call uidoc.Import("BMP Image",strFilepath)
End Select

End Forall

exitScript:
Exit Sub

picerrHandler:
Msgbox "Es ist ein Fehler aufgetreten." & Chr(10)  & Chr(10) _
& "Das ausgewählte Bild ist zu groß."
Goto exitScript

errHandler:
Msgbox "Es ist ein Fehler aufgetreten." & Chr(10)  & Chr(10) _
& "Fehlermeldung: " & Error$ & Chr(10) _
& "Fehlernummer: " & Err & Chr(10) _
& "Codezeile: " & Erl & Chr(10) _
,64,"Error"
Resume exitScript
End Sub
--- Ende Code ---


Gibt es jetzt noch eine Möglichkeit, den Import auf ein Bild zu begrenzen?

cu
Sebastian

koehlerbv:
Du musst nur mit Ubound abprüfen, wieviele Elemente in vFilePath enthalten sind (nach dem Isempty-Check).

Bernhard

theBastian:
... da war es wieder, mein Array-Verständnisproblem.

Versuche mal einen Code hinzustolpern:

dim anzahl as integer
anzahl = ubound (vFilepath)    'default value ist 1, daher keine dimension
if anzahl > 1 dann Msgbox "zuviele Bilder"

So etwa?

Sebastian

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln