Hi,
kann ich es irgendwie (am Besten per LotusScript) einem Agenten ermöglichen, ein Datei nicht von einem Filesystem sondern direkt aus dem Web zu öffnen?
Hi,
kann ich es irgendwie (am Besten per LotusScript) einem Agenten ermöglichen, ein Datei nicht von einem Filesystem sondern direkt aus dem Web zu öffnen?
Du könntest die Datei lokal speichern. Habe jetzt die COM-Klassen vom IE nicht im Kopf, aber eventuell lässt sich da auf den Content zugreifen.
Gruß
Dirk
Hi,
lokal zwischenspeichern ist eine Alternative.
Gibt's eigentlich ein "wget" unter Windows?
/EDIT hab gerade mal gegoogelt - wget(win) gibts wie Sand am Meer
Du kannst auch einen FTP (mit einer autoftp-Datei) machen. Alternativ funktioniert auch Win-API (wininet.dll). Falls Du Code-Schnippsel brauchst, habe da schon was.
Gruß
Dirk
Hi,
der Schnitzel-Code zur WinAPI wäre sicher ganz interessant.
Ich habe aber gerade noch etwas anderes gefunden. Ich kann die Datei vom Webserver als Dateiressource einbinden. Mal schauen, wie ich da per Script zugreifen kann ...
habe noch eine andere Version gefunden.
Version über "urlmon"
'DeclarationsDeclare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (Byval pCaller As Long, Byval szURL As String, _Byval szFileName As String, Byval dwReserved As Long, Byval lpfnCB As Long) As LongFunction DownloadFile(URL As String, LocalFilename As String) As Boolean Dim lngRetVal As Long lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0) If lngRetVal = 0 Then DownloadFile = TrueEnd FunctionSub Click(Source As Button) Dim url As String Dim Dateiname As String URL = "..." Dateiname = "C:\Temp\test.txt" Url = Inputbox$("URl eingeben",,URL) Dateiname = Inputbox$("Dateiname eingeben:",,Dateiname) DownloadFile Url, DateinameEnd Sub
Version über "wininet.dll"
' Declarations
Declare Sub InternetCloseHandle Lib "wininet.dll" (Byval hInet As Long)
'Declare Function InternetOpenA Lib "wininet.dll" (Byval sAgent As String, Byval lAccessType As Long, _
'Byval sProxyName As String, Byval sProxyBypass As String, Byval lFlags As Long) As Long
Declare Function InternetOpenA Lib "wininet.dll" (Byval sAgent As String, Byval IAccessType As Long, _
Byval sProxyName As String, Byval sProxyBypass As String, Byval lFlags As Long) As Long
Declare Function InternetOpenUrlA Lib "wininet.dll" (Byval hOpen As Long, Byval sUrl As String, Byval sHeaders As String, _
Byval lLength As Long, Byval lFlags As Long, Byval lContext As Long) As Long
Declare Sub InternetReadFile Lib "wininet.dll" (Byval hFile As Long, Byval sBuffer As String, Byval lNumBytesToRead As Long, _
lNumberOfBytesRead As Long)
'Enumeration für Internet:
Type InternetOpenType
IOTPreconfig As Integer
IOTDirect As Integer
IOTProxy As Integer
End Type
Const IOTPreconfig = 0
Const IOTDirect = 1
Const IOTProxy = 3
Const vbNullString = Null
Const INET_RELOAD = &H80000000
Dim hInet As Long
Dim hURL As Long
Dim Buffer As String * 2048
Dim Bytes As Long
Function OpenURL(URL As String) As String
'Inet-Connection öffnen:
hInet = InternetOpenA("Test",0, vbNullString, vbNullString, 0)
hURL = InternetOpenUrlA(hInet, URL, vbNullString, 0, INET_RELOAD, 0)
'Daten sammeln:
Do
InternetReadFile hURL, Buffer, Len(Buffer), Bytes
If Bytes = 0 Then Exit Do
OpenURL = OpenURL & Left$(Buffer, Bytes)
Loop
'Inet-Connection schließen:
InternetCloseHandle hURL
InternetCloseHandle hInet
End Function
Sub Click(Source As Button)
URL = "..."
Dateiname = "C:\Temp\test.txt"
Dim s As String
s = OpenURL(URL)
Open Dateiname For Output As #1
Print #1,s
Close #1
End Sub
Alles anzeigen
Gruß
Dirk
Hi,
der URLMON hat wunderbar funktioniert. Ich hoffe nur, ich muß den ganzen Kram mal nicht nach Linux umziehen lassen - aber da habe ich ja dann auf jeden Fall ein wget ...