Autor Thema: vor jpg-Import Dateigröße des zu importieren jpg abfragen  (Gelesen 2508 mal)

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
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
« Letzte Änderung: 05.06.05 - 17:33:03 von SKL74 »
Domino, Notes, Sametime

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: vor jpg-Import Dateigröße des zu importieren jpg abfragen
« Antwort #1 am: 05.06.05 - 15:42:12 »
Gib' der FileLen function von LotusScript eine Chance.

Bernhard

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: vor jpg-Import Dateigröße des zu importieren jpg abfragen
« Antwort #2 am: 05.06.05 - 16:36:03 »
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


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

cu
Sebastian
Domino, Notes, Sametime

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: vor jpg-Import Dateigröße des zu importieren jpg abfragen
« Antwort #3 am: 05.06.05 - 16:51:56 »
Du musst nur mit Ubound abprüfen, wieviele Elemente in vFilePath enthalten sind (nach dem Isempty-Check).

Bernhard

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: vor jpg-Import Dateigröße des zu importieren jpg abfragen
« Antwort #4 am: 05.06.05 - 17:16:20 »
... 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
Domino, Notes, Sametime

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: vor jpg-Import Dateigröße des zu importieren jpg abfragen
« Antwort #5 am: 05.06.05 - 17:21:22 »
Nicht ganz. Wenn Du nicht Option Base 1 gesetzt hast, dann hat ein Array mit einem Element Ubound = 0.
Also:
If Isempty (vFilePath) Then Exit Function
If UBound (vFilePath) > 0 The
   Messagebox "Gemecker"
End If

Ansonsten kannst Du das ganze hervorragend mit dem Entwanzer verfolgen und Deine Arrays dabei beobachten  ;)

Bernhard

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: vor jpg-Import Dateigröße des zu importieren jpg abfragen
« Antwort #6 am: 05.06.05 - 17:32:46 »
Vielen Dank.
Funktioniert natürlich (kommt ja auch vom Fachmann).  ;)

Habe im Debugger alles nochmal angesehen. Vielleicht verstehe ich das ja mal irgendwann (oder ich belege doch mal eine Schulung).

cu
Sebastian
Domino, Notes, Sametime

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz