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

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 482
  • 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: 482
  • 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: 482
  • 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: 482
  • 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