IntenetWriteFile via LotusScript

  • Hallo zusammen,


    wieder mal eine neue Herausforderung.
    Möchte via LS eine Datei auf einen FTP-Server schieben und dabei eine ProgressBar anzeigen.


    Ich weiss ich muss es per InternetWriteFile umsetzen, doch es wird nichts.
    Die Datei auf dem Server bekomme ich erstellt, die lokale File geöffnet, doch wie ich nun die Daten in die Datei auf den Server bekomme versteh ich nicht, da InternetWriteFile aus der wininet.dll eine Byte() erwartet.


    Vielleicht jemand das ganze schon einmal gemacht und kann mir ein paar Hinweise oder Beispiele geben?!


    Vielen Dank für jede Hilfe.


    MfG Stefan

  • [url=http://www-10.lotus.com/ldd/sandbox.nsf/ecc552f1ab6e46e4852568a90055c4cd/9e752a60b6f902c7852568ef006b4ad1?OpenDocument&Highlight=0,ftp]Hier[/url] gibt es eine komplette Script Library für den Zweck

  • Hallo taurec,


    hab auch bei Gooogle gesucht und gefunden, nur ist es so, dass dort der Upload ohne ProgressBar passiert.


    habe auch noch eine gefunden, in der der Download mit ProgBar drin ist aber nicht der Upload.


    Drum frag ich ja ....

  • in der db wird per FtpPutFile aus der wininet.dll die datei auf den Server geschrieben.


    Diese Funktion ist in der dll fest hintelegt und ich kann Sie nicht ändern.Ich bekomme auch keine Status-Meldung von der Funktion wie weit sie ist, also ist es schlecht möglich den Status anzuzeigen.


    Daher muss ich die Bytes oder den Text manuell in die Datei auf dem Server schreiben, was sonst in der FtpPutFile passiert.

  • Guten Morgen,


    mein Problem ist, dass ich es hinbekomme ASCII Daten in eine Textdatei zu schreiben, aber es einfach nicht schaffe Binär Daten zu senden.


    Ich deklariere die Funktion mit


    Declare Function InternetWriteFile Lib "wininet.dll" _
    (Byval hFile As Long, Byval sBuffer As String, Byval lNumberOfBytesToWrite As Long, _
    lNumberOfBytesWrite As Long) As Integer


    Wenn ich das geanze ändere in (wie ich es auch gefunden habe)


    Declare Function InternetWriteFile Lib "wininet.dll" _
    (Byval hFile As Long, Byval sBuffer As Byte, Byval lNumberOfBytesToWrite As Long, _
    lNumberOfBytesWrite As Long) As Integer


    funktioniert es nicht mehr oder ich mache etwas falsch.


    Lese die Date per NotesStream.Read aus und wenn ich die gelesen Bytes in die Funktion übergebe passiert nix.
    Ausserdem will ich nicht jedes Byte einzeln schreiben sondern mehr als nur einen.


    MfG Stefan

  • Ich hatte es in Java.
    Nur war das Problem, dass es bei machen funktionierte bei manchen nicht.
    Habe die jakarta-klassen genutzt.


    Bin schon eine kleinen Schritt weiter, doch habe ich eine Zeile in einem Beispielscript, welche ich nicht verstehe :


    Dim Buffer As String * 4096


    Was genau passiert hier?
    Warum wird eine String mit einer Zahl multipliziert?

  • Hast du schon jemals die Designerhilfe aufgemacht ?


    Dann hättest du da die folgende Info gefunden:


    Zitat


    Dim varName As String [* num]
    The optional num argument specifies that varName is a fixed-length string variable of num characters. A fixed-length string variable is initialized to a string of null characters (the character Chr(0)).

  • Moin zusammen,


    habe es aufgegeben.
    Werde versuchen den Java-Part versuchen bei jedem zum Laufen zu bekommen.
    API ist eh nicht so unbedingt das beste mittel, aber ich war der Meinung, dass es vielleicht in LN das beste wäre auch mit LS zu arbeiten.


    Naja, danke trotzdem für die Hilfe.


    MfG Stefan

    • Offizieller Beitrag

    Warum erstellst Du die Datei nicht lokal und schiebst diese per CMD und AutoFTP auf den Server? Dafür brauchst Du keine API, keinen DLL-Aufruf und auch kein Java.


    Außerdem funktioniert es im Windows und unter Linux und im Frontend und Backend.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein