Hoi! Ik ben bezig met een programma'tje om meerdere bestanden achter elkaar te kunnen uploaden, ik zit echter met een probleem.
Na het lang zoeken en uitspitten heb ik aanwijzingen gevonden voor het uploaden van een bestand met een Inet-object.
Het is me al gelukt om het Inet object gewoon te gebruiken voor het posten van standaard-variables, maar nu lukt het me niet de post zo te krijgen, dat zowel het bestand als enkele variabelen doorkomen.
Mijn code:
Een paar verklaringen:
- Ik heb al veel zitten schuiven, omdat ik al vaak de draad kwijt ben geweest. Deze structuur leek me eigenlijk het meest logisch
- Ik las dat ik moest converteren naar Unicode, weet iemand precies waarom, en of ik dit goed doe?
- Wat is de juist volgorde van de headers?
- Of: Hoe ziet een 'echte' request/post eruit van een upload-script? Normaal gesproken doet Internet Exlporer al het werk voor je, ik moet dit zelf doen.
- Mijn PHP-script ziet geen enkele geposte value
- Laat staan dat het script mijn bestand herkent
- Wat is precies het verschil tussen de header en de post-string? En hoe plaats ik deze?
Ik heb dit gevonden als meest heldere verklaring van hoe zo'n header eruit moet zien:
Wie o wie helpt mij verder, want ik begin vast te zitten.
Na het lang zoeken en uitspitten heb ik aanwijzingen gevonden voor het uploaden van een bestand met een Inet-object.
Het is me al gelukt om het Inet object gewoon te gebruiken voor het posten van standaard-variables, maar nu lukt het me niet de post zo te krijgen, dat zowel het bestand als enkele variabelen doorkomen.
Mijn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| Sub UploadFile()
Dim strURL As String
Dim strFile As String
Dim StrFileName As String
Dim strHeader As String
Dim strBody As String
Dim aPostBody() As Byte
Dim nFile As Integer
'strURL = "http://www.onlinealbum.nl/standalone_upload/upload.php"
strURL = "http://192.168.0.1/upload.php"
' Get the file name
StrFileName = lstFotos.List(Int(lngCurrentFoto)) 'lngCurrentFoto is een global
' Grab the file
nFile = FreeFile
Open StrFileName For Binary As #nFile
strFile = String(LOF(nFile), " ")
Get #nFile, , strFile
Close #nFile
' Assemble an HTTP request.
'Converteer naar Unicode
strFile = StrConv(strFile, vbFromUnicode)
' Maak de header aan
strHeader = "Content-Type: multipart/form-data; boundary=Xu02=$" & vbCrLf & _
"Content-Disposition: form-data; name=files;"
' Maak de body aan
strBody = "username=" & Base64Encode(txtUsername.Text) & "" & _
"password=" & Base64Encode(txtPassword.Text) & ";" & _
"size=" & Str(FileLen(StrFileName)) & ";" & _
"userfile=" & StrFileName & vbCrLf & _
"--Xu02=$" & vbCrLf & _
strFile & vbCrLf & _
"--Xu02=$--"
PostData uploadControl, "http://www.onlinealbum.nl/standalone_upload/upload.php", strBody, strHeader
End Sub
Public Sub PostData(InetControl, strURL As String, strPostString, Optional strHeader As String)
If strHeader = "" Then
strHeader = "Content-type: application/x-www-form-urlencoded" & vbCrLf
End If
InetControl.Execute InetControl.URL, "POST", strPostString & "", strHeader
End Sub |
Een paar verklaringen:
- Ik heb al veel zitten schuiven, omdat ik al vaak de draad kwijt ben geweest. Deze structuur leek me eigenlijk het meest logisch
- Ik las dat ik moest converteren naar Unicode, weet iemand precies waarom, en of ik dit goed doe?
- Wat is de juist volgorde van de headers?
- Of: Hoe ziet een 'echte' request/post eruit van een upload-script? Normaal gesproken doet Internet Exlporer al het werk voor je, ik moet dit zelf doen.
- Mijn PHP-script ziet geen enkele geposte value
- Laat staan dat het script mijn bestand herkent
- Wat is precies het verschil tussen de header en de post-string? En hoe plaats ik deze?
Ik heb dit gevonden als meest heldere verklaring van hoe zo'n header eruit moet zien:
http://www.faqs.org/rfcs/rfc2183.htmlThe following is an example of the use of the `attachment'
disposition with a multipart body part. The user should see text-
part-1 immediately, then take some action to view multipart-2. After
taking action to view multipart-2, the user will see text-part-2
right away, and be required to take action to view jpeg-1. Subparts
are indented for clarity; they would not be so indented in a real
message.
Content-Type: multipart/mixed; boundary=outer
Content-Description: multipart-1
--outer
Content-Type: text/plain
Content-Disposition: inline
Content-Description: text-part-1
Some text goes here
--outer
Content-Type: multipart/mixed; boundary=inner
Content-Disposition: attachment
Content-Description: multipart-2
--inner
Content-Type: text/plain
Content-Disposition: inline
Content-Description: text-part-2
Some more text here.
--inner
Content-Type: image/jpeg
Content-Disposition: attachment
Content-Description: jpeg-1
<jpeg data>
--inner--
--outer--
Wie o wie helpt mij verder, want ik begin vast te zitten.
[ Voor 7% gewijzigd door looskuh op 02-07-2004 21:47 ]